           pos
           immanted-zones))
 
+(defn- translate-to-canvas
+  [point]
+  (let [zoom @wb/zoom-ref
+        ccords (gpt/multiply canvas-coords zoom)]
+    (-> point
+        (gpt/subtract ccords)
+        (gpt/divide zoom))))
+
+(defn- conditional-align
+  [point]
+  (if @wb/alignment-ref
+    (uds/align-point point)
+    (rx/of point)))
+
 (defn- on-init-draw-path
   [shape]
-  (letfn [(conditional-align-point [point]
-            (if @wb/alignment-ref
-              (uds/align-point point)
-              (rx/of point)))
-
-          (stoper-event? [[type opts]]
+  (letfn [(stoper-event? [[type opts]]
             (or (and (= type :key/down)
                      (= (:key opts) 13))
                 (and (= type :mouse/double-click)

(defn- on-init-draw-free-path
  [shape]
  (let [mouse (->> (rx/sample 10 wb/mouse-viewport-s)
                   (rx/mapcat (fn [point]
                                (if @wb/alignment-ref
                                  (uds/align-point point)
                                  (rx/of point))))
                   (rx/map #(gpt/subtract % canvas-coords)))
        stoper (->> wb/events-s
                    (rx/map first)
                    (rx/filter #(= % :mouse/up))

                 (false? (:shift? opts))))]

    (let [mouse (->> (rx/sample 10 wb/mouse-viewport-s)
                     (rx/mapcat conditional-align)
                     (rx/map translate-to-canvas))
          stoper (->> (rx/merge
                       (rx/take 1 drawing-stoper)
                       (rx/filter stoper-event? wb/events-s))
