      */
     private function measureTextSize(composeWidth:Number):Rectangle
     {             
-        var clampWidth:Boolean = isNaN(explicitWidth);
-               
         // Don't want to trigger a another remeasure when we compose the text.
         ignoreDamageEvent = true;
 
-        // Up the composeWidth if it isn't at least minWidth so we get an 
-        // accurate measurement.
-        if (clampWidth &&
-            !isNaN(explicitMinWidth) && composeWidth < explicitMinWidth)
-        {
-            composeWidth = explicitMinWidth;
+        // Adjust for explicit min/maxWidth so the measurement is accurate.
+        if (isNaN(explicitWidth))
+        {
+            if (!isNaN(explicitMinWidth) &&
+                isNaN(composeWidth) || composeWidth < minWidth)
+            {
+                composeWidth = minWidth;
+            }
+            if (!isNaN(explicitMaxWidth) &&
+                isNaN(composeWidth) || composeWidth > maxWidth)
+            {
+                composeWidth = maxWidth;
+            }
         }
         
         // The bottom border can grow to allow all the text to fit.

                bounds = measureTextSize(composeWidth);
                
                measuredWidth = _textContainerManager.compositionWidth;
                measuredHeight = Math.ceil(bounds.height);
            }
            else if (!isNaN(heightConstraint) || !isNaN(explicitHeight) || 
                     !isNaN(_heightInLines))
            {
                // if no text, 1 char wide with specified height and grow
                
                composeWidth = 
                    hostFormat.lineBreak == "toFit" ? maxWidth : NaN;
                
                if (!isNaN(heightConstraint))
                    composeHeight = heightConstraint;

                    composeHeight = calculateHeightInLines();

                // The composeWidth may be adjusted for minWidth/maxWidth.
                bounds = measureTextSize(NaN);
                
                // Have we already hit the limit with the existing text?  If we
                // are beyond the composeHeight we can assume we've maxed out on
                // the compose width as well.
                if (bounds.bottom > composeHeight)
                {
                    measuredWidth = _textContainerManager.compositionWidth;
                    measuredHeight = composeHeight;
