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


        var compose:Boolean = false;
        var clipText:Boolean = false;
        
        // FIXME (gosmith): optimize for right-to-left text so compose isn't always done
        // when height or width changes.
        if (invalidateCompose || 
            composeForAlignStyles(unscaledWidth, unscaledHeight))
        {
            compose = true;
        }
        else if (unscaledHeight != bounds.height)
        {
            // Height changed.
            if (composeOnHeightChange(unscaledHeight))
            {
                compose = true;
            }
            else if (unscaledHeight < bounds.height)
            {
                // Don't need to recompose but need to clip since not all the
                // height is needed.

        // still be valid if we decided to do an early return above.
        super.measure();

        measuredWidth = Math.ceil(bounds.right);
        measuredHeight = newMeasuredHeight;
        
        // Remember the number of text lines during measure. We can use this to
        // optimize the double measure scheme for text reflow.
