                 // No reflow for explicit lineBreak
                 if (_textContainerManager.hostFormat.lineBreak == "explicit")
                     return false;
-                
-                widthConstraint = width;
             } 
             
-            if (height != measuredHeight)
+            if (!isNaN(heightConstraint))
             {        
                 // Do we have a constrained height and an explicit width?
                 // If so, the sizes are set so no need to remeasure now.

            // remeasure which will reset autoSize.
            autoSize = false;
            
            widthConstraint = NaN;
            heightConstraint = NaN;
            
            if (width != measuredWidth)
            {
                // Do we have a constrained width and an explicit height?
                // If so, the sizes are set so no need to remeasure now.
                if (!isNaN(explicitHeight) || !isNaN(_heightInLines))
                    return false;
                
                // Is there no width?
                if (width == 0) 

                    // The composeWidth may be adjusted for minWidth/maxWidth.
                    bounds = measureTextSize(NaN, composeHeight);
                    
                    measuredWidth = Math.ceil(bounds.right);               
                    measuredHeight = composeHeight;

                    // 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 (or the composeHeight isn't
                    // large enough for even one line of text).
                    if (bounds.bottom > composeHeight)
                        autoSize = false;
                }
                else
                {
