         {
             // Calculate the vector from pre-transform top-left to
             // post-transform top-left:
-            MatrixUtil.transformBounds(new Point(_width, _height), m, topLeft);
+            computeTopLeft(topLeft, _width, _height, m);
         }
         else
         {

        size.y += strokeExtents.y;
        return size;
    }
    
    /**
     *  @private
     */

        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
        {
