         }
         
         // Define values
+        // Get current layer values
+        let mask = self.layer.mask?.presentationLayer() as? CAGradientLayer
+        let currentValues = mask?.colors as? [CGColorRef]
+        
         switch (type) {
         case .ContinuousReverse:
             values = [
-                [transp, opaque, opaque, opaque],           // Initial gradient
+                currentValues ?? [transp, opaque, opaque, opaque],           // Initial gradient
                 [transp, opaque, opaque, opaque],           // Begin of fade in
                 [transp, opaque, opaque, transp],           // End of fade in, just as scroll away starts
                 [transp, opaque, opaque, transp],           // Begin of fade out, just before scroll home completes

        }
        
        let gradientMask: CAGradientLayer = (self.layer.mask as! CAGradientLayer?) ?? CAGradientLayer()

        // Remove any in flight animations
        gradientMask.removeAllAnimations()
        
        // Set up colors
        let transparent = UIColor.clearColor().CGColor

        }
        
        if (animated) {
            // Finish transaction
            CATransaction.commit()
            
            // Create animation for color change
            let colorAnimation = CABasicAnimation(keyPath: "colors")
            colorAnimation.fromValue = gradientMask.colors
            colorAnimation.toValue = adjustedColors
            colorAnimation.fillMode = kCAFillModeForwards
            colorAnimation.removedOnCompletion = false
            colorAnimation.delegate = self
            colorAnimation.setValue(adjustedColors, forKey: "setupColors")
            gradientMask.addAnimation(colorAnimation, forKey: "setupColors")
        } else {
            gradientMask.colors = adjustedColors
            CATransaction.commit()
        }
