     func webViewDidInvalidatePage(webView: TLWebView) {
         if let visitable = currentVisitable {
             visitable.updateScreenshot()
-            currentVisit?.cancel()
+            topmostVisit?.cancel()
 
             visitable.showScreenshot()
             visitable.showActivityIndicator()

    // MARK: Visiting

    public var currentVisitable: TLVisitable?
    private var currentVisit: TLVisit?
    private var lastIssuedVisit: TLVisit?

    public func visit(visitable: TLVisitable) {
        visitVisitable(visitable, action: .Advance)

    // MARK: TLVisitableDelegate

    public func visitableViewWillAppear(visitable: TLVisitable) {
        if let topmostVisit = self.topmostVisit, lastIssuedVisit = self.lastIssuedVisit {
            let topmostVisitable = topmostVisit.visitable
            if visitable === topmostVisitable && visitable.viewController.isMovingToParentViewController() {
                // Back swipe gesture canceled
                if topmostVisit.state == .Completed {
                    // Top visitable was fully loaded before the gesture began
                    lastIssuedVisit.cancel()
                } else {
