         @transitionView prevView, false
 
         # ... and then set initial transforms
-        @transform prevView, 0, not isPush
-        @transform nextView, @endRatio(isPush), isPush
+        @transform prevView, 0, not isPush unless @willShowDialog
+
+        unless @willHideDialog
+          @transform nextView, @endRatio(isPush), isPush
 
         @$el.get(0).offsetWidth
 
         # Add transitions and set new transforms
         @transitionView nextView, true
-        @transitionView prevView, true
         @transform nextView, 0, not isPush
-        @transform prevView, @endRatio(not isPush), not isPush
+
+        unless @willShowDialog
+          @transitionView prevView, true
+          @transform prevView, @endRatio(not isPush), not isPush
 
         # After the transition has occured, hide
         window.clearTimeout @transitionOutTimeout
         @transitionOutTimeout = window.setTimeout (=>
           nextView.delegateEvents()
-          prevView.$el.hide().removeClass("active")
+          prevView.$el.removeClass("active")
+          prevView.$el.hide() unless @willShowDialog
           @clearTransforms nextView
           @clearTransforms prevView
         ), @ms + 100

    # Scale both views down, the view on top ending at 100%.
    zoomTransform: (view, ratio, isPush) ->
      if view
        transform = "translate3d(0, 0, 0) scale(#{1 + ratio * 0.5})"

        view.__body.css
          "-webkit-transform": transform

      if prevView?.stack?.indexOf(name) > -1
        isPush = false

      if options.isDialog
        @willShowDialog = true

      # Custom transitions means we remove swiping.
      if options.transition
        @undelegateEvents()
