         var needsRestore:Boolean = false;
         if (stageText == null)
         {
-            needsRestore = !StageTextPool.current.hasCachedStageText(this);
-            stageText = StageTextPool.current.acquireStageText(this);
+            stageText = StageTextPool.current.acquireStageText(multiline, savedStageText);
+            if (stageText !==  savedStageText)
+                needsRestore = true ;  // returned a different stageText, so needs to restore its properties
+            savedStageText = null;  // clear savedStageText
             stageText.visible = false;
         }
 

     *  editing.
     */
    protected var stageText:StageText;

    /**
     *  Flag indicating one or more styles have changed. If invalidateStyleFlag

                    result[prop] = cleanProperties[prop];
            }
        }
        return result;
    }


    /**
     *  Puts a StageText back into the pool  when SST is removed from stage.
     *  (note: the StageText has also been saved in the SST)
     *  If this causes the pool to grow
     *  larger than its reserve size, this starts a timer to check and reduce
     *  the size of the pool poolTimerInterval milliseconds later.
     */
    public function releaseStageText(stageText: StageText, multiline: Boolean): void
    {
        if (multiline)
        {
            multilinePool.push(stageText);

