         if (!mx_internal::styleChainInitialized)
             return;
 
-        compose(unscaledWidth, unscaledHeight);
+        var overset:Boolean = compose(unscaledWidth, unscaledHeight);
+
+        // Use scrollRect to clip overset lines.
+        // But don't set scrollRect to null if it is already null,
+        // because this causes Player 10.0 to allocate memory.
+        if (overset)
+        {
+            displayObject.scrollRect =
+                new Rectangle(0, 0, unscaledWidth, unscaledHeight);
+        }
+        else if (displayObject.scrollRect)
+        {
+            displayObject.scrollRect = null;
+        }
     }
 
     //--------------------------------------------------------------------------

    /**
     *  @private
     */
    private function compose(width:Number = Infinity,
                             height:Number = Infinity):void
    {
        var fontDescription:FontDescription = new FontDescription();
        fontDescription.cffHinting = getStyle("cffHinting");
        fontDescription.fontLookup = getStyle("fontLookup");


        textBlockComposer.composeText(text, elementFormat);
                
        textBlockComposer.addTextLines(container);

        return textBlockComposer.isOverset;
    }

    /**
