The following works as I expect: morph := Morph new topLeft: 200@400; openInWorld.
outputRect := morph fullBounds. canvas := Display defaultCanvasClass extent: outputRect extent depth: Display depth. scale := 1. t := MorphicTransform offset: outputRect topLeft angle: 0 scale: scale. clipRect := outputRect translateBy: outputRect topLeft negated. canvas transformBy: t clippingTo: clipRect during: [ :aCanvas | aCanvas fullDrawMorph: morph ]. canvas form asMorph openInWindow. "morph delete." but if I change scale even a little bit (e.g. 0.95), things quickly go south. Check out scale = 1 vs scale = 0.95 below: <http://forum.world.st/file/n4803830/Screenshot_2015-02-05_00.png> Obviously they differ by more than I expected. If I change scale to 0.5, the morph disappears from view in the canvas completely. I had both translation and scale working in a spike by translating with FormCanvas>>#translateBy:during: and then magifying with "canvas form magnifyBy: 0.5", but I want to do this in my morph's drawing method, so I want to do both with the canvas. Where am I going wrong here? ----- Cheers, Sean -- View this message in context: http://forum.world.st/Canvas-Transform-Goes-Haywire-if-Scaled-tp4803830.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.