             labelDisplay.text = hostComponent.label;
         labelDisplay.commitStyles();
 
-        if (labelDisplay.text)
-        {
-            // +1 originates from MX Button without explaination
-            var textSize:Point = labelDisplay.measuredTextSize;
-            labelWidth = textSize.x + 1;
-            labelHeight = textSize.y;
-        }
-        else if (!iconDisplay)
-        {
-            // only get empty label height when there no icon is present
-            labelHeight = measureText("Wj").height + UITextField.TEXT_HEIGHT_PADDING;
+		// we want to get the label's width and height if we have text or there's
+		// no icon present
+        if (labelDisplay.text != "" || !iconDisplay)
+        {
+            labelWidth = getElementPreferredWidth(labelDisplay);
+            labelHeight = getElementPreferredHeight(labelDisplay);
+			textDescent = labelDisplay.getLineMetrics(0).descent;
         }
         
         var w:Number = layoutPaddingLeft + layoutPaddingRight;

        
        var labelWidth:Number = 0;
        var labelHeight:Number = 0;
        var iconDisplay:DisplayObject = getIconDisplay();

        // reset text if it was truncated before.

        var textWidth:Number = 0;
        var textHeight:Number = 0;
        var textDescent:Number = 0;
		var textLeading:Number = 0;
		
        // reset text if it was truncated before.
        if (hostComponent && labelDisplay.isTruncated)
            labelDisplay.text = hostComponent.label;
        labelDisplay.commitStyles();
		
		
        if (hostComponent)
        {
			var metrics:TextLineMetrics = labelDisplay.getLineMetrics(0);
            textWidth = getElementPreferredWidth(labelDisplay);
            textHeight = getElementPreferredHeight(labelDisplay);
            textDescent = metrics.descent;
			textLeading = metrics.leading;
        }

        var viewWidth:Number = unscaledWidth;
