      */
     private function installMouseListeners():void
     {
-        var sbRoot:DisplayObject = target.systemManager.getSandboxRoot();
+        const sm:ISystemManager = target.systemManager;
+        const sbRoot:DisplayObject = sm.getSandboxRoot();
         
         sbRoot.addEventListener(MouseEvent.MOUSE_MOVE, sbRoot_mouseMoveHandler, true);
         sbRoot.addEventListener(MouseEvent.MOUSE_UP, sbRoot_mouseUpHandler, true);
+
+        // If mouseUp is on StageText the only way to know that is to listen for it on the Stage.
+        if (sm.stage && sm.isTopLevelRoot())
+            sm.stage.addEventListener(MouseEvent.MOUSE_UP, sbRoot_mouseUpHandler);
+        
         sbRoot.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, sbRoot_mouseUpHandler);
         
         target.systemManager.deployMouseShields(true);

import mx.events.SandboxMouseEvent;
import mx.events.TouchInteractionEvent;
import mx.events.TouchInteractionReason;
import mx.utils.GetTimerUtil;

use namespace mx_internal;

     */
    private function uninstallMouseListeners():void
    {
        const sm:ISystemManager = target.systemManager;
        const sbRoot:DisplayObject = sm.getSandboxRoot();
        
        // mouse events added in installMouseListeners()
        sbRoot.removeEventListener(MouseEvent.MOUSE_MOVE, sbRoot_mouseMoveHandler, true);
        sbRoot.removeEventListener(MouseEvent.MOUSE_UP, sbRoot_mouseUpHandler, true);
        
        if (sm.stage && sm.isTopLevelRoot())
            sm.stage.removeEventListener(MouseEvent.MOUSE_UP, sbRoot_mouseUpHandler);
        
        sbRoot.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, sbRoot_mouseUpHandler);

        target.systemManager.deployMouseShields(false);
    }
    
