         
         transitionContext.containerView.addSubview(snapshotView)
         
+        self.transform = transform
+        self.fromView = fromView
         self.snapshotView = snapshotView
-        self.fromView = fromView
         self.toView = toView
-        self.transform = transform
         
         if transitionContext.isInteractive { return }
         
         animate({
             fromVC.view.alpha = 0
             toVC.view.tintAdjustmentMode = .normal
-            snapshotView.center = toView.center
+            snapshotView.center = center
             snapshotView.transform = transform
         },
         completion: { [weak self] in

        transitionContext.containerView.addSubview(snapshotView)
        toVC.view.layoutIfNeeded()
        
        let transform = CGAffineTransform(
            scaleX: toView.bounds.size.width / fromView.bounds.size.width,
            y: toView.bounds.size.height / fromView.bounds.size.height)
        
        snapshotView.center = fromView.center
        toVC.view.alpha = 0
        fromView.isHidden = true
        toView.isHidden = true
        
        self.snapshotView = snapshotView
        self.fromView = fromView
        self.toView = toView
        self.transform = transform
        
        if transitionContext.isInteractive { return }
        
        animate({
            toVC.view.alpha = 1
            fromVC.view.tintAdjustmentMode = .dimmed
            snapshotView.center = toView.center
            snapshotView.transform = transform
        },
        completion: { [weak self] in

              let toView = findView(withId: id, in: toVC.view),
              let snapshotView = fromView.snapshotView(afterScreenUpdates: true) else { return }
        
        let center = toView.superview?.convert(
            toView.center,
            to: transitionContext.containerView) ?? .zero
        let transform = CGAffineTransform(
            scaleX: toView.bounds.size.width / fromView.bounds.size.width,
            y: toView.bounds.size.height / fromView.bounds.size.height)
