     /**
      *  @private
      */
-    private function composeOnHeightChange(unscaledHeight:Number):Boolean
+    private function composeOnHeightChange(unscaledHeight:Number,
+                                           contentHeight:Number):Boolean
     {
         // Height increased and there may be more text.  It is possible that
         // there is more text even if isOverset isn't set.  If height
         // was specified, it will compose just enough text to fit the 
         // composition bounds and depending on text placement, it may not 
         // be overset.
-        if (unscaledHeight > bounds.height &&
+        if (unscaledHeight > contentHeight &&
             (isOverset || !isNaN(_composeHeight)))
             return true;
             

        // as we may have messed up the text lines.
        invalidateDisplayList();
        
        // Put on next pixel boundary for crisp edges.
        bounds.width = Math.ceil(bounds.width);        
        bounds.height = Math.ceil(bounds.height);

        // If the measured height is not affected, then constrained
        // width measurement is not neccessary.
        if (!isNaN(_widthConstraint) && measuredHeight == bounds.height)
            return;
            
        // Call super.measure() here insted of in the beginning of the method,

     *  @private
     */
    private function composeForAlignStyles(unscaledWidth:Number, 
                                           unscaledHeight:Number,
                                           contentWidth:Number,
                                           contentHeight:Number):Boolean
    {
        // For textAlign, if the composeWidth isn't the same
        // as the unscaledWidth, and the text isn't left aligned, we need to 
        // recompose.
        //
        var width:Number = isNaN(_composeWidth) ? 
                           contentWidth : _composeWidth;
        if (unscaledWidth != width)
        {
            var direction:String = getStyle("direction");
            var textAlign:String = getStyle("textAlign");
