   
   public func pick(point: CGPoint) {
     var p = point
-    color = colorPickFromPicker(&p)
+    guard let c = colorPickFromPicker(&p) else { return }
+    color = c
     delegate?.colorPicker(self, didPickColor: color, touchPoint: p)
   }
   

    for x in 0..<Int(bounds.width) {
      for y in 0..<Int(bounds.height) {
        var p = CGPoint(x: x, y: y)
        let c = colorPickFromPicker(&p)
        if CGColorEqualToColor(c.CGColor, color.CGColor) {
          delegate?.colorPicker(self, didPickColor: color, touchPoint: p)
          return p

    isPicking = false
  }
  
  private func colorPickFromPicker(inout point: CGPoint) -> UIColor? {
    point.x = forcePointX >= 0 ? forcePointX * bounds.width : point.x
    point.y = forcePointY >= 0 ? forcePointY * bounds.height : point.y
    point.x = min(max(point.x, leftPickableInset), bounds.width - rightPickableInset)
    point.y = min(max(point.y, topPickableInset), bounds.height - bottomPickableInset)
    return picker.pick(&point)
  }
  
  override public func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
