         (update-in [:drawing] assoc :in-progress? false)
         (assoc-in [:drawing :points] [])
         (assoc-in [:mouse :down] false)
-        (assoc-in [:mouse :x] x)
-        (assoc-in [:mouse :y] y)
-        (assoc-in [:mouse :rx] rx)
-        (assoc-in [:mouse :ry] ry)
+        (update-mouse x y)
         ;; TODO: get rid of nils (datomic doesn't like them)
         (update-in [:drawing :layer]
                    (fn [layer]

    state
    (finalize-layer state)))

(defmethod post-control-event! :mouse-depressed
  [target message [x y button] previous-state current-state]
  (let [cast! (fn [msg & [payload]]

    (let [r (if (get-in state [:drawing :in-progress?])
              (let [points ((fnil conj []) (get-in state [:drawing :points]) {:x x :y x :rx rx :ry ry})]
                (-> state
                    (update-mouse x y)
                    (assoc-in [:drawing :points] points)
                    (update-in [:drawing :layer] assoc
                               :layer/current-x snap-x
