                                                  maxWidth, maxHeight);
         if (!newSize)
             newSize = new Point(minWidth, minHeight);
-        return strokeExtents.x * -0.5 + getBoundingBox(newSize.x, newSize.y, m).x;
+        return strokeExtents.left + getBoundingBox(newSize.x, newSize.y, m).x;
     }
 
     /**

     */
    override public function getBoundsYAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
    {
        var strokeExtents:Point = getStrokeExtents(postLayoutTransform);
        var m:Matrix = getComplexMatrix(postLayoutTransform);

        if (!m)
        {
            // Check for a common case, BasicLayout measure() always hits this:
            if (isNaN(height))
                return strokeExtents.y * -0.5 + this.y + measuredY;
            else
                height = preferredHeightPreTransform();    

            var naturalBounds:Rectangle = getBounds();
            var sy:Number = (naturalBounds.height == 0 || height == 0) ? 1 : height / naturalBounds.height;
            return strokeExtents.y * -0.5 + this.y + measuredY * sy;
        }
    
        if (!isNaN(width))
            width -= strokeExtents.x;

        if (!isNaN(height))
            height -= strokeExtents.y;

        // Calculate the width and height pre-transform:
        var newSize:Point = MatrixUtil.fitBounds(width, height, m,

            width = getBoundingBox(width, height, layoutFeatures.layoutMatrix).width;

        // Take stroke into account
        return width + getStrokeExtents(postLayoutTransform).width;
    }

    /**
