         var textWidth:Number = 0;
         var textHeight:Number = 0;
         
-        var lineMetrics:TextLineMetrics;
+        // reset text if it was truncated before.
+        if (hostComponent && labelDisplay.isTruncated)
+            labelDisplay.text = hostComponent.label;
+        labelDisplay.commitStyles();
         
         if (hostComponent && hostComponent.label != "")
         {
-            lineMetrics = measureText(hostComponent.label);
-            textWidth = lineMetrics.width + TEXT_WIDTH_PADDING;
-            textHeight = lineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
+            textWidth = labelDisplay.textWidth + TEXT_WIDTH_PADDING;
+            textHeight = labelDisplay.textHeight + UITextField.TEXT_HEIGHT_PADDING;
         }
         else
         {
-            lineMetrics = measureText("Wj");
-            textHeight = lineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
+            textHeight = measureText("Wj").height + UITextField.TEXT_HEIGHT_PADDING;
         }
         
         var textAlign:String = "center"; // getStyle("textAlign");

import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.text.TextLineMetrics;

import mx.core.IFlexDisplayObject;
import mx.core.ILayoutElement;

        resizePart(labelDisplay, labelWidth, labelHeight);
        positionPart(labelDisplay, Math.max(0, Math.round(labelX)), Math.max(0, Math.round(labelY))); 
        
        if (textWidth > labelWidth)
        {
            labelDisplay.truncateToFit();
