             else
             {
                 // We're not ready to measure yet.
-                // We need updateDisplayList() to first tell us the unscaledWidth
-                // that has been calculated from the percentWidth.
+                // We need updateDisplayList() to first tell us
+				// the unscaledWidth that has been calculated
+				// from the percentWidth.
                 measuredWidth = 0;
                 measuredHeight = 0;
             }
             return;
         }
 
-        measureUsingWidth(explicitWidth);
+        // Figure out the width we're going to use;
+		// explicitWidth trumps maxWidth.
+        var availableWidth:Number = !isNaN(explicitWidth) ?
+									explicitWidth :
+									maxWidth;
         
+        measureUsingWidth(availableWidth);
     }
     
     /**

            var oldWordWrap:Boolean = textField.wordWrap;
            textField.wordWrap = false;
            
            measuredWidth = Math.ceil(textField.textWidth) + UITextField.TEXT_WIDTH_PADDING;
            measuredHeight = Math.ceil(textField.textHeight) + UITextField.TEXT_HEIGHT_PADDING;
            // Round up because embedded fonts can produce fractional values;
            // if a parent container rounds a component's actual width or height
            // down, the component may not be wide enough to display the text.


        textField.x = paddingLeft;
        textField.y = paddingTop;

        // Although we also set wordWrap in commitProperties(), we do 
        // this here to handle width being set through setActualSize().
        if (Math.floor(width) < Math.floor(measuredWidth))
