         }
 	
 		setElementSize(labelDisplay, labelWidth, labelHeight);    
-		
-		// FIXME mcho: use a baselineShift style
-		var metrics:TextLineMetrics = labelDisplay.getLineMetrics(0);
-		var textShift:Number = 3;
-		var labelY:Number = Math.round(vAlign * (viewHeight - (metrics.ascent - textShift))) - StyleableTextField.TEXT_HEIGHT_PADDING/2 - textShift + paddingTop;
+				
+		// We want to center using the "real" ascent
+		var labelY:Number = Math.round(vAlign * (viewHeight - labelDisplay.textTopToLastBaselineHeight))  + paddingTop;
+		// Make sure to offset by the distance to the text field's top edge
+		labelY -= labelDisplay.textTopOffset;
 		setElementPosition(labelDisplay, paddingLeft, labelY);
 
         // attempt to truncate the text now that we have its official width

	//  Protected Properties 
	//
	//--------------------------------------------------------------------------
	// Enforced minimum height of the item renderer
	protected var itemMinimumHeight:uint = 0;
	
	

                                      unscaledHeight:Number):void
    {
        // figure out backgroundColor
        var backgroundColor:uint;
        var drawBackground:Boolean = true;
        var downColor:* = getStyle("downColor");
