                 x: this.x,
                 y: this.y,
                 explicitWidth: this.explicitWidth,
-                explicitHeight: this.explicitHeight};
+                explicitHeight: this.explicitHeight,
+                percentWidth: this.percentWidth,
+                percentHeight: this.percentHeight,
+                isPopUp: this.isPopUp};
             
             pauseWhenHidden = false;
             
-            // remove from old parent
-            if (parent is IVisualElementContainer)
+            if (!isPopUp)
             {
-                var ivec:IVisualElementContainer = IVisualElementContainer(parent);
-                beforeFullScreenInfo.childIndex = ivec.getElementIndex(this);
-                ivec.removeElement(this);
+                // remove from old parent
+                if (parent is IVisualElementContainer)
+                {
+                    var ivec:IVisualElementContainer = IVisualElementContainer(parent);
+                    beforeFullScreenInfo.childIndex = ivec.getElementIndex(this);
+                    ivec.removeElement(this);
+                }
+                else
+                {
+                    beforeFullScreenInfo.childIndex = parent.getChildIndex(this);
+                    parent.removeChild(this);
+                }
+                
+                // add as a popup
+                PopUpManager.addPopUp(this, FlexGlobals.topLevelApplication as DisplayObject, false, null, moduleFactory);
             }
-            else
-            {
-                beforeFullScreenInfo.childIndex = parent.getChildIndex(this);
-                parent.removeChild(this);
-            }
-            
-            // add as a popup
-            PopUpManager.addPopUp(this, FlexGlobals.topLevelApplication as DisplayObject);
             
             // Resize the component to be the full screen of the stage.
             // Push the component at (0,0).  It should be on top of everything 

            setLayoutBoundsSize(screenBounds.width, screenBounds.height, true);
            // set the explicit width/height to make sure this value sticks regardless 
            // of any other code or layout passes.  Calling setLayoutBoundsSize() before hand
            // allows us to use postLayout width/height
            this.explicitWidth = width;
            this.explicitHeight = height;
            setLayoutBoundsPosition(0, 0, true);

        this.y = beforeFullScreenInfo.y;
        this.explicitWidth = beforeFullScreenInfo.explicitWidth;
        this.explicitHeight = beforeFullScreenInfo.explicitHeight;
        this.percentWidth = beforeFullScreenInfo.percentWidth;
        this.percentHeight = beforeFullScreenInfo.percentHeight;
        
        // sometimes there's no video object currently or there might not've been a 
        // video object when we went in to fullScreen mode.  There may be no videoObject
