Suppose we have a graph with axes and tick marks. I want to change the view transformation to zoom in on the graph, but I don't want the tick mark objects to zoom the same way. I could split the graph into 3 widgets and put each axis in its own widget. But in other cases, I might have some sort of heads-up display that needs to hold still while the rest of the canvas zooms. The heads-up would certainly be a subcanvas, so I think the problem is solved if each canvas object (including subcanvases) has its own transformation which is allowed to concatenate to or replace the view transform. Then, the heads-up has its own transform that doesn't get multiplied by the view transform. Most objects do receive the view transform.