     public override init(frame: CGRect) {
         super.init(frame: frame)
         commonInit()
-    }
-    
+	}
+	
     public required init?(coder aDecoder: NSCoder) {
         super.init(coder: aDecoder)
 		commonInit()
     }
 	
-	func commonInit() {
+	public func commonInit() {
 		backgroundColor = UIColor.clearColor()
-		clipsToBounds = false
+		
+		drawLayer.masksToBounds = true
+		drawLayer.cornerRadius = 3.0
+		drawLayer.borderColor = borderColor.CGColor
+		drawLayer.borderWidth = borderWidth
+		drawLayer.startPoint = CGPoint(x: 0.5, y: 1)
+		drawLayer.endPoint = CGPoint(x: 0.5, y: 0)
+		
+		// Draw gradient
+		let hues: [CGFloat] = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
+		drawLayer.locations = hues
+		drawLayer.colors = hues.map({ (hue) -> CGColor in
+			return UIColor(hue: hue, saturation: 1, brightness: 1, alpha: 1).CGColor
+		})
 		
 		previewView.clipsToBounds = true
 		previewView.layer.cornerRadius = previewDimension / 2

		previewView.layer.borderWidth = 1.0
	}
	
    // MARK: - UIControl methods
    public override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {
        super.beginTrackingWithTouch(touch, withEvent: event)
        
        updateForTouch(touch, modifyHue: true)
        showPreview(touch)
        
        sendActionsForControlEvents(.TouchDown)

			self.previewView.transform = CGAffineTransformIdentity
		})
    }
    
    private func minimizedTransformForRect(rect: CGRect) -> CGAffineTransform {
        let minimizedDimension: CGFloat = 5.0
		
		let scale = minimizedDimension / previewDimension
