     {
         validateNow();
         
-        if (!stage)
+        // If we use device fonts, then the unscaled width is 
+        // textWidth * scaleX / scaleY
+        if (!stage || embedFonts)
             return textWidth + TEXT_WIDTH_PADDING;
 
-        return textWidth * transform.concatenatedMatrix.a + TEXT_WIDTH_PADDING;
+        var m:Matrix = transform.concatenatedMatrix;
+        
+        return (textWidth * m.a
+                / m.d) + TEXT_WIDTH_PADDING;
     }
 
     //----------------------------------

    {
        validateNow();
        
        if (!stage)
            return textHeight + TEXT_HEIGHT_PADDING;

        return textHeight * transform.concatenatedMatrix.d + TEXT_HEIGHT_PADDING;
    }

    //----------------------------------

import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.text.TextLineMetrics;

import mx.automation.IAutomationObject;
import mx.managers.ISystemManager;
import mx.managers.IToolTipManagerClient;
