 					super.addEventListener(MouseEvent.MOUSE_MOVE, resetMouseCursorTracking, true, EventPriority.CURSOR_MANAGEMENT + 1, true);
 				}
 
+                // add listeners in other sandboxes in capture mode so we don't miss anything
 				addEventListenerToSandboxes(request.eventType, sandboxMouseListener,
-							request.useCapture, request.priority, request.useWeakReference, event.target as IEventDispatcher);
+							true, request.priority, request.useWeakReference, event.target as IEventDispatcher);
 				addEventListenerToOtherSystemManagers(request.eventType, otherSystemManagerMouseListener, 
-							request.useCapture, request.priority, request.useWeakReference);
+							true, request.priority, request.useWeakReference);
 				if (getSandboxRoot() == this)
+				{
+				    if (isTopLevelRoot() && actualType == MouseEvent.MOUSE_UP)
+				    {
+				        stage.addEventListener(actualType, eventProxy.marshalListener,
+                            false, request.priority, request.useWeakReference);
+				    }
+
                     super.addEventListener(actualType, eventProxy.marshalListener,
-                            request.useCapture, request.priority, request.useWeakReference);
+                        true, request.priority, request.useWeakReference);
+                }
 			}
 		}
 		else if (event.type == EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST)

				clone = event.clone();
				if (trackClones)
					currentSandboxEvent = clone;
			    // TODODJL: could be sharing parentBridge with children
				IEventDispatcher(children[i]).dispatchEvent(clone);
			}
		}

	{
		if (mouseCatcher)
		{
			try
			{
			var g:Graphics = mouseCatcher.graphics;
