         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 && hostComponent.label != "")
-        {
-            // +1 originates from MX Button without explaination
-            var textSize:Point = labelDisplay.measuredTextSize;
-            textWidth = textSize.x + 1;
-            textHeight = textSize.y;
-            textDescent = labelDisplay.getLineMetrics(0).descent;
-        }
-        else
-        {
-            var metrics:TextLineMetrics = measureText("Wj");
-            textHeight = metrics.height + UITextField.TEXT_HEIGHT_PADDING;
+		
+		
+        if (hostComponent)
+        {
+			var metrics:TextLineMetrics = labelDisplay.getLineMetrics(0);
+            textWidth = getElementPreferredWidth(labelDisplay);
+            textHeight = getElementPreferredHeight(labelDisplay);
             textDescent = metrics.descent;
+			textLeading = metrics.leading;
         }
 
         var viewWidth:Number = unscaledWidth;

            }

            // button viewHeight may be smaller than the labelDisplay textHeight
            labelHeight = Math.min(viewHeight, textHeight);
            labelX += ((viewWidth - labelWidth - iconWidth -
                horizontalGap - layoutPaddingLeft - layoutPaddingRight) / 2) + layoutPaddingLeft;


            labelDisplay.text = hostComponent.label;
        labelDisplay.commitStyles();

		// 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;
