diff --git a/RZTransitions.podspec b/RZTransitions.podspec
index d853c8d..08e4635 100644
--- a/RZTransitions.podspec
+++ b/RZTransitions.podspec
@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
   s.name         = "RZTransitions"
-  s.version      = "1.2"
+  s.version      = "1.2.1"
   s.summary      = "RZTransitions is a library to help make iOS7 custom View Controller transitions slick and simple."
 
   s.description  = <<-DESC
@@ -19,7 +19,7 @@ Pod::Spec.new do |s|
   s.social_media_url   = "http://twitter.com/raizlabs"
 
   s.platform     = :ios, "7.0"
-  s.source       = { :git => "https://github.com/Raizlabs/RZTransitions.git", :tag => "1.2" }
+  s.source       = { :git => "https://github.com/Raizlabs/RZTransitions.git", :tag => "1.2.1" }
   s.source_files  = "RZTransitions/**/*.{h,m,swift}"
   s.frameworks    = "CoreGraphics", "UIKit", "Foundation"
   s.requires_arc  = true
diff --git a/RZTransitions/Interactors/RZBaseSwipeInteractionController.m b/RZTransitions/Interactors/RZBaseSwipeInteractionController.m
index 9911069..81c59c0 100644
--- a/RZTransitions/Interactors/RZBaseSwipeInteractionController.m
+++ b/RZTransitions/Interactors/RZBaseSwipeInteractionController.m
@@ -90,42 +90,35 @@ - (void)handlePanGesture:(UIPanGestureRecognizer *)panGestureRecognizer
                 }
             }
             else {
-                if ( self.action & RZTransitionAction_Pop ) {
-                    [self cancelInteractiveTransition];
-                    self.isInteractive = NO;
+                if (self.action & RZTransitionAction_Pop) {
                     [self.fromViewController.navigationController popViewControllerAnimated:YES];
                 }
-                else if ( self.action & RZTransitionAction_Dismiss ) {
-                    [self cancelInteractiveTransition];
-                    self.isInteractive = NO;
+                else if (self.action & RZTransitionAction_Dismiss) {
                     [self.fromViewController dismissViewControllerAnimated:YES completion:nil];
                 }
             }
             break;
-            
+
         case UIGestureRecognizerStateChanged:
-            if ( self.isInteractive ) {
-                self.shouldCompleteTransition = ( percentage >= [self swipeCompletionPercent] );
+            if (self.isInteractive) {
+                self.shouldCompleteTransition = (percentage >= [self swipeCompletionPercent]);
                 [self updateInteractiveTransition:percentage];
             }
             break;
-            
+
         case UIGestureRecognizerStateCancelled:
-            self.isInteractive = NO;
-            [self cancelInteractiveTransition];
-            break;
-            
         case UIGestureRecognizerStateEnded:
-            if ( self.isInteractive ) {
-                self.isInteractive = NO;
-                if ( !self.shouldCompleteTransition || panGestureRecognizer.state == UIGestureRecognizerStateCancelled ) {
+            if (self.isInteractive) {
+                if (!self.shouldCompleteTransition) {
                     [self cancelInteractiveTransition];
                 }
                 else {
                     [self finishInteractiveTransition];
                 }
+
+                self.isInteractive = NO;
             }
-            
+
         default:
             break;
     }
diff --git a/RZTransitions/Transitions/RZCirclePushAnimationController.h b/RZTransitions/Transitions/RZCirclePushAnimationController.h
index a2caaea..78c66a9 100644
--- a/RZTransitions/Transitions/RZCirclePushAnimationController.h
+++ b/RZTransitions/Transitions/RZCirclePushAnimationController.h
@@ -33,7 +33,7 @@
 
 @protocol RZCirclePushAnimationDelegate;
 
-@interface RZCirclePushAnimationController : RZZoomPushAnimationController <RZAnimationControllerProtocol>
+@interface RZCirclePushAnimationController : RZZoomPushAnimationController
 
 /**
  *  Animation delegate for controlling information about the circle transition.
diff --git a/RZTransitions/Transitions/RZCirclePushAnimationController.m b/RZTransitions/Transitions/RZCirclePushAnimationController.m
index 247fc09..70d0207 100644
--- a/RZTransitions/Transitions/RZCirclePushAnimationController.m
+++ b/RZTransitions/Transitions/RZCirclePushAnimationController.m
@@ -37,6 +37,8 @@
 
 @interface RZCirclePushAnimationController ()
 
+@property (weak, nonatomic) UIView *maskedView;
+
 - (CGPoint)circleCenterPointWithFromView:(UIView *)fromView;
 - (CGFloat)circleStartingRadiusWithFromView:(UIView *)fromView toView:(UIView *)toView;
 
@@ -60,6 +62,8 @@ - (instancetype)init
 
 - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
 {
+    [super animateTransition:transitionContext];
+
     UIView *fromView = [(NSObject *)transitionContext rzt_fromView];
     UIView *toView = [(NSObject *)transitionContext rzt_toView];
 
@@ -96,6 +100,7 @@ - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionCo
         toView.layer.mask = circleMaskLayer;
         toView.layer.masksToBounds = YES;
         [circleMaskLayer addAnimation:circleMaskAnimation forKey:kRZCircleMaskAnimation];
+        self.maskedView = toView;
     }
     else {
         [circleMaskAnimation setFillMode:kCAFillModeForwards];
@@ -108,9 +113,21 @@ - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionCo
         fromView.layer.mask = circleMaskLayer;
         fromView.layer.masksToBounds = YES;
         [circleMaskLayer addAnimation:circleMaskAnimation forKey:kRZCircleMaskAnimation];
+        self.maskedView = fromView;
     }
-    
-    [super animateTransition:transitionContext];
+}
+
+- (void)animationEnded:(BOOL)transitionCompleted
+{
+    // animationEnded: is a optional method of the UIViewControllerAnimatedTransitioning protocol.
+    // RZZoomPushAnimationController does not currently implement this method, but might at some point,
+    //  so make sure we are doing something sane here.
+    if ([[[self class] superclass] respondsToSelector:@selector(animationEnded:)]) {
+        [super animationEnded:transitionCompleted];
+    }
+
+    self.maskedView.layer.mask = nil;
+    self.maskedView = nil;
 }
 
 #pragma mark - Helper Methods
diff --git a/RZTransitions/Transitions/RZZoomPushAnimationController.m b/RZTransitions/Transitions/RZZoomPushAnimationController.m
index a2129d6..d1b1eb5 100644
--- a/RZTransitions/Transitions/RZZoomPushAnimationController.m
+++ b/RZTransitions/Transitions/RZZoomPushAnimationController.m
@@ -64,7 +64,7 @@ - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionCo
                          }];
     }
     else {
-        if (transitionContext.presentationStyle == UIModalPresentationNone) {
+        if (transitionContext.presentationStyle == UIModalPresentationNone || transitionContext.presentationStyle == UIModalPresentationFullScreen) {
             [container insertSubview:toView belowSubview:fromView];
         }
         toView.transform = CGAffineTransformMakeScale(1.0 + kRZPushScaleChangePct, 1.0 + kRZPushScaleChangePct);