     (move-camera-on-swipe! gesture-manager current-state animation-observable)
     (switch-zoom-on-spacebar!
       current-state animation-observable animation-signaller)
-    (zoom-out-on-pinch!
+    (zoom-on-pinch!
       gesture-manager current-state animation-observable animation-signaller)))

  (apply swap! current-state f args)
  (sync-graph! @current-state))

(defn update-state! [current-state k f & args]
  (apply swap! current-state update k f args)
  (sync-graph! @current-state))


(def vec-distance (comp vec-length subtract-vec))

;; Geometry

(defn scroll-scale-for-state [state]
  (if (= :zoom-out (:projection state)) zoom-out-scale 1))

(defn zoom-out->world-pos [state pos]
  (let [{:keys [camera-pos view-size]} state
        view-center (scalar-multiply view-size 0.5)
        displacement (subtract-vec pos view-center)]
    (add-vec camera-pos (scalar-multiply displacement (/ zoom-out-scale)))))

(defn scaled-distance-from-camera
  "Returns the distance of the given point from the camera, scaled so that
