         let oldCornerRadius = cornerRadius
         cornerRadius = 0
         
-        let oldBackgroundColor = backgroundColor
-        backgroundColor = .clear
+        var oldBackgroundColor: UIColor?
+        
+        if shouldHide {
+            oldBackgroundColor = backgroundColor
+            backgroundColor = .clear
+        }
         
         let oldTransform = motionTransform
         motionTransform = CATransform3DIdentity
         
         let v = snapshotView(afterScreenUpdates: afterUpdates)!
         cornerRadius = oldCornerRadius
-        backgroundColor = oldBackgroundColor
+        
+        if shouldHide {
+            backgroundColor = oldBackgroundColor
+        }
+        
         motionTransform = oldTransform
         
         let contentView = v.subviews.first!

@objc(MotionDelegate)
public protocol MotionDelegate {
    @objc
    optional func motion(transition: MotionTransition, willTransition toView: UIView, fromView: UIView)
    
    @objc
    optional func motion(transition: MotionTransition, didTransition toView: UIView, fromView: UIView)
}

open class MotionTransition: NSObject {

    }
}

extension UINavigationController: UINavigationControllerDelegate {
    open override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
    }

    @objc(navigationController:animationControllerForOperation:fromViewController:toViewController:)
    open func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
            return isMotionEnabled ? MotionTransition(isPresenting: operation == .push) : nil
    }
}

extension UITabBarController: UITabBarControllerDelegate {
    open func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
            return isMotionEnabled ? MotionTransition() : nil
    }
}

extension MotionTransition: UIViewControllerAnimatedTransitioning {
    @objc(animateTransition:)
    open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        self.transitionContext = transitionContext
        prepareToViewController()
        prepareFromViewController()
        
        fromViewController.motionDelegate?.motion?(transition: self, willTransition: fromView, toView: toView)
        
        Motion.delay(modifiedDelay) { [weak self] in
            guard let s = self else {
                return
            }
            
            s.prepareContainerView()
            s.prepareTransitionSnapshot()
            s.prepareTransitionPairs()
            s.prepareTransitionView()
            s.prepareTransitionBackgroundView()
            s.prepareTransitionToView()
            s.prepareTransitionAnimation()
        }
    }
    
    @objc(transitionDuration:)
