             if (!isNaN(estimatedWidth))
                 messageDisplay.width = estimatedWidth - paddingAndGapWidth - decoratorWidth - myIconWidth;
                 
+			var metrics:TextLineMetrics = messageDisplay.getLineMetrics(0);
             messageWidth = getElementPreferredWidth(messageDisplay);
-            messageHeight = getElementPreferredHeight(messageDisplay);
+            messageHeight = messageDisplay.measuredTextSize.y - StyleableTextField.TEXT_HEIGHT_PADDING - metrics.descent - messageShift;	
+			if (messageDisplay.numLines == 1) // account for the extra leading on single line text
+				messageHeight -= metrics.leading;
         }
         
         myMeasuredWidth += Math.max(labelWidth, messageWidth);

            iconWidth = iconDisplay.getLayoutBoundsWidth();
            iconHeight = iconDisplay.getLayoutBoundsHeight();
            
            // if there's no messageDisplay, then use vAlign to position the icon.
            // otherwise, just position it at y = paddingTop
            var iconDisplayY:Number;
            if (!messageDisplay)
                iconDisplayY = Math.round(vAlign * (viewHeight - iconHeight)) + paddingTop;
            else
                iconDisplayY = paddingTop;
            
            setElementPosition(iconDisplay, paddingLeft, iconDisplayY);
        }
        

        if (numHorizontalSections > 0)
            paddingAndGapWidth += (getStyle("horizontalGap") * (numHorizontalSections - 1));
        
		var hasLabel:Boolean = labelDisplay && labelDisplay.text != "";
		var hasMessage:Boolean = messageDisplay && messageDisplay.text != "";

        var verticalGap:Number = (hasLabel && hasMessage) ? getStyle("verticalGap") : 0;
        var paddingHeight:Number = getStyle("paddingTop") + getStyle("paddingBottom");
        
        // Icon is on left
