             nope.y = Math.floor(stage.stageHeight / 2) - Math.floor(nope.height / 2);
 
             cam.setMode(stage.stageWidth, stage.stageHeight, 30);
-            trace("Camera size is " + cam.width + ", " + cam.height);
-            videoface.width = cam.width;
-            videoface.height = cam.height;
+            trace("Camera size is " + cam.width + ", " + cam.height + " (tried "
+                + stage.stageWidth + "," + stage.stageHeight + ")");
+
+            this.prepVideo();
+        }
+
+        public function prepVideo() : void {
+            videoface.x = 0;
+            videoface.y = 0;
+            videoface.width = stage.stageWidth;
+            videoface.height = stage.stageHeight;
 
             var mirror:Matrix = new Matrix();
             mirror.scale(-1, 1);
-            mirror.translate(cam.width, 0);
+            mirror.translate(stage.stageWidth, 0);
             videoface.transform.matrix = mirror;
         }
 

                return;
            }

            // TODO: handle a missing camera
            // TODO: handle a "dead" camera (fps = 0?)
            /* TODO: handle a muted camera? we'll only get an

        public function takePhoto() : void {
            // freeze image
            try {
                var photobits:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false);
                photobits.draw(videoface);

                // Swap the video for the captured bitmap.
