 (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)))
+                   (rx/mapcat conditional-align)
+                   (rx/map translate-to-canvas))
         stoper (->> wb/events-s
                     (rx/map first)
                     (rx/filter #(= % :mouse/up))

          pos
          immanted-zones))

(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]]
            (or (and (= type :key/down)
                     (= (:key opts) 13))
                (and (= type :mouse/double-click)

                 (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))
