         size.y += strokeExtents.y;
         return size;
     }
-    
+
+    /**
+     *  Override for graphic elements that need specific calculation of
+     *  coordinates of top-left corner of bounding box when resized to
+     *  <code>width</code> and <code>height</code>.
+     */
+    protected function computeTopLeft(topLeft:Point, width:Number, height:Number, m:Matrix):Point
+    {
+        MatrixUtil.transformBounds(new Point(_width, _height), m, topLeft);
+        return topLeft;
+    }
+
     /**
      *  @private
      */


package mx.graphics.graphicsClasses
{

        if (m)
        {
            // Calculate the origin of the element after transformation before our changes are applied.
            var topLeft:Point = computeTopLeft(new Point(measuredX, measuredY), _width, _height, m);

            // now adjust our tx/ty values based on the difference between our current transformed position and 
            // where we want to end up.
            x = x - topLeft.x + layoutFeatures.layoutX;
            y = y - topLeft.y + layoutFeatures.layoutY;
        }
        else
        {
