                 parent.removeChild(this);
             }
             
-            // add to new parent
-            if (FlexGlobals.topLevelApplication is IVisualElementContainer)
-                IVisualElementContainer(FlexGlobals.topLevelApplication).addElement(this);
-            else
-                FlexGlobals.topLevelApplication.addChild(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 
-            // at this point because it was added directly to the application.
+            // at this point because it was added as a popup
             setLayoutBoundsSize(stage.fullScreenWidth, stage.fullScreenHeight, 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);
-            invalidateSize();
-            invalidateDisplayList();
             
             // this is for video performance reasons, but sometimes the videoObject isn't there
             // if the source is null

 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.0
 *  @productversion OSMF 1.0
 */
[Event(name="durationChange", type="org.osmf.events.TimeEvent")]


            beforeFullScreenInfo = {parent: this.parent,
                x: this.x,
                y: this.y,
                explicitWidth: this.explicitWidth,
                explicitWidth: this.explicitWidth};
            
            pauseWhenHidden = false;
            
            // remove from old parent
