Hi Blockers I do not really understand why drawOnAthensCanvas: is not defined on BlShape (especially when we see how many self space are defined in this method. And this is one of the few things I thought I understood from bloc (grouping the rendering in a separate object). drawOnAthensCanvas: aCanvas "Actually render receiver on aCanvas in local bounds. Override to customize. aCanvas is an instance of AthensCanvas aCanvas must not be nil" | pathTransform | pathTransform := aCanvas pathTransform. "First we fill" pathTransform restoreAfter: [ | path fillExtent fillTranslation | "We fill inside natural element's bounds" fillExtent := self shape path fillExtentFor: self shape inBounds: self localBounds. path := self shape path pathOn: aCanvas forExtent: fillExtent. "Translate fill if needed" fillTranslation := self shape path fillTranslationFor: self shape inBounds: self localBounds. pathTransform translateBy: fillTranslation. aCanvas setPaint: self shape fillPaint; drawShape: path ]. pathTransform restoreAfter: [ | path strokeExtent strokeTranslation | "We stroke inside natural element's bounds" strokeExtent := self shape path strokeExtentFor: self shape inBounds: self localBounds. path := self shape path pathOn: aCanvas forExtent: strokeExtent. "Translate stroke if needed" strokeTranslation := self shape path strokeTranslationFor: self shape inBounds: self localBounds. pathTransform translateBy: strokeTranslation. aCanvas setPaint: self shape strokePaint; drawShape: path ]