             // Height changed.
             if ((unscaledHeight > mx_internal::bounds.height && 
                 mx_internal::isOverset) ||
+                composeOnHeightChange(unscaledHeight) ||
                 getStyle("blockProgression") != "tb")
             {
                 // More height is needed and it's possible there is more text
-                // since it didn't all fit before.
-                compose = true;
-            }
-            else if (composeOnHeightChange())
-            {
-                // Height changed and the styles require a recompose so the
-                // text is positioned correctly for the new size.
+                // since it didn't all fit before.  Or the styles require a
+                // recompose if the height changes.
                 compose = true;
             }
             else (unscaledHeight < mx_internal::bounds.height)

     *  @private
     *  TODO This should be mx_internal, but that causes a compiler error.
     */
    protected function composeRequired(unscaledWidth:Number, 
                                       unscaledHeight:Number):Boolean
    {
        // For textAlign, if the composeWidth isn't the same
        // as the unscaledWidth, and the text isn't left aligned, we need to 

        // ToDo: optimize for right-to-left text so compose isn't always done
        // when height or width changes.
        if (mx_internal::invalidateCompose || 
            composeForAlignStyles(unscaledWidth, unscaledHeight))
        {
            compose = true;
        }
