             bridge.dispatchEvent(bridgeRequest);
             bounds = Rectangle(bridgeRequest.data);
         }
+		else if (!systemManager.isTopLevel())
+		{
+			var obj:DisplayObjectContainer = DisplayObject(systemManager).parent.parent;
+			
+			if ("getVisibleApplicationRect" in obj)
+			{
+				var visibleRect:Rectangle = obj["getVisibleApplicationRect"](true);
+				bounds = bounds.intersection(visibleRect);
+			}
+		}
         
         return bounds;
     }

	
    public function getVisibleApplicationRectHandler(event:Request):void
    {
        var sbRoot:DisplayObject = systemManager.getSandboxRoot();
        var screen:Rectangle;

        if (systemManager != sbRoot)
        {
            var request:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST, 
                                    false, false,

        }
        else
        {
            event.value = getVisibleApplicationRect(event.value.bounds as Rectangle);
            event.preventDefault();
        }

