 				snapshotView.bottomAnchor.constraint(equalTo: presentingViewSnapshotView.bottomAnchor)
 			])
 		}
+	}
+	
+	private func updateSnapshotViewAspectRatio() {
+		guard
+			let containerView = containerView,
+			let presentingViewSnapshotView = presentingViewSnapshotView,
+			cachedContainerWidth != containerView.bounds.width
+			else {
+				return
+		}
+		
+		cachedContainerWidth = containerView.bounds.width
+		aspectRatioConstraint?.isActive = false
+		let aspectRatio = containerView.bounds.width / containerView.bounds.height
+		aspectRatioConstraint = presentingViewSnapshotView.widthAnchor.constraint(equalTo: presentingViewSnapshotView.heightAnchor, multiplier: aspectRatio)
+		aspectRatioConstraint?.isActive = true
 	}
 	
 	// MARK:- Dismissal

                self.presentedViewController.view.frame = frame
                self.presentedViewController.view.mask = nil
                self.presentedViewController.view.round(corners: [.topLeft, .topRight], withRadius: 8)
			}, completion: { _ in 
				self.updateSnapshotView()
			}

	/// then generates a new snapshot of the `presentingViewController`'s view,
	/// and then replaces the existing snapshot with it
	private func updateSnapshotView() {
		guard let presentingViewSnapshotView = presentingViewSnapshotView else {
			return
		}
		
		updateSnapshotViewAspectRatio()
		
		if let snapshotView = presentingViewController.view.snapshotView(afterScreenUpdates: true) {
			presentingViewSnapshotView.subviews.forEach { $0.removeFromSuperview() }
