         {
             var m:Matrix = computeMatrix();
             if (m)
-                width = getBBox(width / 2, height / 2, m).width;
+                width = MatrixUtil.getEllipseBoundingBox(width / 2, height / 2, width / 2, height / 2, m).width;
         }
 
         // Take stroke into account

        {
            var m:Matrix = computeMatrix();
            if (m)
                height = getBBox(width / 2, height / 2, m).height;
        }

        // Take stroke into account

    override public function getLayoutBoundsX(postTransform:Boolean = true):Number
    {
        var stroke:Number = -getStrokeExtents(postTransform).x * 0.5;
        
        if (postTransform)
        {
            var m:Matrix = computeMatrix();
            if (m)
                return stroke + MatrixUtil.getEllipseBoundingBox(width / 2, height / 2, width / 2, height / 2, m).x;
        }
        
        return stroke + this.x;
    }

    /**
