             self.isInteractive = true
             self.presentingViewController?.presentViewController(self.presentedViewController!, animated: true, completion: nil)
         case (.Changed):
-            let position = gesture.locationInView(gesture.view);
-            let distanceFromSide = UIApplication.sharedApplication().wmf_tocShouldBeOnLeft ? position.x : CGRectGetMaxX(gesture.view!.bounds) - position.x
-            let transitionProgress = distanceFromSide / CGRectGetMaxX(gesture.view!.bounds)
+            let translation = gesture.translationInView(gesture.view)
+            let transitionProgress = translation.x * -UIApplication.sharedApplication().wmf_tocRTLMultiplier / CGRectGetMaxX(self.presentedViewController!.view.bounds)
             self.updateInteractiveTransition(transitionProgress)
         case (.Ended):
             self.isInteractive = false

    
    // MARK: - UIGestureRecognizerDelegate
    public func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        guard gestureRecognizer == self.dismissalGesture else {
            return true
        }
        
        if let translation = self.dismissalGesture?.translationInView(dismissalGesture?.view) {
            if(translation.x * UIApplication.sharedApplication().wmf_tocRTLMultiplier > 0){
                return true
            }else{
                return false
            }
        }else{
            return false
        }
    }
}

    
    
    // MARK: - Gestures
    lazy var presentationGesture: UIPanGestureRecognizer = {
        let gesture = UIPanGestureRecognizer.init(target: self, action: #selector(WMFTableOfContentsAnimator.handlePresentationGesture(_:)))
        gesture.maximumNumberOfTouches = 1
        gesture.delegate = self
        return gesture
    }()
    
