     override func layoutSubviews() {
         super.layoutSubviews()
         
-        let oldCenter = rippleView.center
         setupRippleView()
-        rippleView.center = oldCenter
+        if let knownTouchCenterLocation = touchCenterLocation {
+            rippleView.center = knownTouchCenterLocation
+        }
         
         rippleBackgroundView.layer.frame = bounds
         rippleBackgroundView.layer.mask = rippleMask

    
    private var tempShadowRadius: CGFloat = 0
    private var tempShadowOpacity: Float = 0
    
    private var rippleMask: CAShapeLayer? {
        get {

    
    override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {
        if trackTouchLocation {
            touchCenterLocation = touch.locationInView(self)
        } else {
            touchCenterLocation = nil
        }
        
        UIView.animateWithDuration(0.1,
