         unloadBackground()
     }
     
+    override func viewWillLayoutSubviews() {
+        super.viewWillLayoutSubviews()
+        
+        if interfaceCreated {
+            var videoToScreenRatio: CGFloat = 0
+            var leftOffset: CGFloat = 0
+            var topOffset: CGFloat = 0
+            
+            if (backgroundBaseSize.width / backgroundBaseSize.height) > (CGRectGetWidth(self.view.frame) / CGRectGetHeight(self.view.frame)) {
+                videoToScreenRatio = backgroundBaseSize.height / CGRectGetHeight(self.view.frame)
+                leftOffset = ((backgroundBaseSize.width / videoToScreenRatio) - CGRectGetWidth(self.view.frame)) / 2
+            } else {
+                videoToScreenRatio = backgroundBaseSize.width / CGRectGetWidth(self.view.frame)
+                topOffset = ((backgroundBaseSize.height / videoToScreenRatio) - CGRectGetHeight(self.view.frame)) / 2
+            }
+            
+            if videoToScreenRatio > 0 {
+                buttonOverlayView.frame = CGRectMake(
+                    (buttonOverlayBottomLeft.x / videoToScreenRatio) - leftOffset,
+                    CGRectGetHeight(self.view.frame) - (((buttonOverlayBottomLeft.y + buttonOverlaySize.height) / videoToScreenRatio) - topOffset),
+                    buttonOverlaySize.width / videoToScreenRatio,
+                    buttonOverlaySize.height / videoToScreenRatio
+                )
+                
+                playButton.frame.size = CGSizeMake(playButtonSize.width / videoToScreenRatio, playButtonSize.height / videoToScreenRatio)
+                extrasButton.frame.size = CGSizeMake(extrasButtonSize.width / videoToScreenRatio, extrasButtonSize.height / videoToScreenRatio)
+                
+                playButton.center = CGPointMake(CGRectGetWidth(buttonOverlayView.frame) / 2, (CGRectGetHeight(playButton.frame) / 2))
+                extrasButton.center = CGPointMake(CGRectGetWidth(buttonOverlayView.frame) / 2, CGRectGetHeight(buttonOverlayView.frame) - (CGRectGetHeight(extrasButton.frame) / 2))
+            }
+        }
+        
+        if let backgroundVideoView = backgroundVideoView {
+            backgroundVideoView.frame = self.view.bounds
+            
+            if let backgroundVideoLayer = backgroundVideoLayer {
+                backgroundVideoLayer.frame = backgroundVideoView.bounds
+            }
+        }
+        
+        if let backgroundImageView = backgroundImageView {
+            backgroundImageView.frame = self.view.bounds
+        }
+    }
+    
     override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
         return (DeviceType.IS_IPAD ? .Landscape : .All)
     }

            exitButton.titleLabel?.layer.masksToBounds = false
            exitButton.titleLabel?.layer.shouldRasterize = true
            homeScreenViews.append(exitButton)
            
            if let appearance = NGDMManifest.sharedInstance.mainExperience?.appearance {
                willFadeInViews = appearance.backgroundVideoFadeTime > 0

    
    // MARK: Video Player
    func loadBackground() {
        if let appearance = NGDMManifest.sharedInstance.mainExperience?.appearance, nodeStyle = nodeStyle {
            if let backgroundVideoURL = nodeStyle.backgroundVideoURL {
                let playerItem = AVPlayerItem(cacheableURL: backgroundVideoURL)
                if let videoPlayer = backgroundVideoPlayer {
                    videoPlayer.replaceCurrentItemWithPlayerItem(playerItem)
