 
         // This listener is intended to run before any other KeyboardEvent listeners
         // so that it can redispatch a cancelable=true copy of the event. 
-        addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true, 1000);
-        addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, true, 1000);
+        if (getSandboxRoot() == this)
+        {
+            addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true, 1000);
+            addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, true, 1000);
+        }
+        if (isTopLevelRoot() && stage)
+        {
+            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false, 1000);
+            stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, false, 1000);
+        }
 
         var docFrame:int = (totalFrames == 1)? 0 : 1;
 		addEventListener(Event.ENTER_FRAME, docFrameListener);

import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.EventDispatcher;
import flash.events.EventPhase;

		readyForKickOff = true;
		if (currentFrame >= 2)
			kickOff();
	}   

	/**
	 *  @private
