         // We don't need to do this if the view is already visible.
         guard let actionsView = actionsView, actionsView.superview == nil else { return }
         
-        let contentView = super.contentView
-        
+
+        let width = actionsView.maximumWidth
+        actionsView.frame = CGRect(x: contentView.bounds.width - width, y: 0, width: width, height: contentView.bounds.height)
         actionsView.swipeType = swipeType
+
         contentView.addSubview(actionsView)
-        
-        setNeedsLayout()
-        layoutIfNeeded()
     }
     
     // MARK: Opening & closing action pane
     
-    var leftViewToCoverCellOnLandscape: UIView?
-    var righttViewToCoverCellOnLandscape: UIView?
+    func takeSwipeSnapshot() {
+        guard let snapshot = contentView.snapshotView(afterScreenUpdates: false) else {
+            return
+        }
+        swipeSnapshotView = snapshot
+        swipeSnapshotView?.backgroundColor = backgroundView?.backgroundColor
+        snapshot.frame = contentView.bounds
+        contentView.addSubview(snapshot)
+    }
+    
+    func removeSwipeSnapshot() {
+        swipeSnapshotView?.removeFromSuperview()
+        swipeSnapshotView = nil
+    }
     
     func openActionPane() {
         // Make sure we don't swipe twice on the same cell.
         guard let actionsView = actionsView, swipeTranslation >= 0 else { return }
         
+        clipsToBounds = true
+        
         let swipeType = actionsView.swipeType
+        
+        takeSwipeSnapshot()
         
         showActionsView(with: swipeType)
         

            let springVelocity = abs(swipeVelocity) * duration / totalDistance
        
            UIView.animate(withDuration: TimeInterval(duration), delay: 0, usingSpringWithDamping: 10, initialSpringVelocity: springVelocity, options: .beginFromCurrentState, animations: {
                
                
                self.swipeTranslation = targetTranslation
                self.layoutIfNeeded()
            }, completion: { (finished: Bool) in
                actionsView.isUserInteractionEnabled = true
            })

    var swipeVelocity: CGFloat = 0
    var originalStartPosition: CGPoint = .zero
    
    var swipeSnapshotView: UIView?
    
    var swipeTranslation: CGFloat = 0 {
        didSet {
            swipeSnapshotView?.transform = CGAffineTransform(translationX: swipeTranslation, y: 0)
        }
    }
    
    var minimumSwipeTrackingPosition: CGFloat {
