 (defn- on-init-draw-generic
   [shape]
   (let [mouse (->> 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))

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

    (let [mouse (->> (rx/sample 10 wb/mouse-viewport-s)
                     (rx/mapcat conditional-align-point)
                     (rx/map #(gpt/subtract % canvas-coords)))

          stoper (->> (rx/merge
                       (rx/take 1 drawing-stoper)
                       (rx/filter stoper-event? wb/events-s))

                (reset! drawing-shape shape)))

            (on-draw [[pt ctrl?]]
              (reset! drawing-position (assoc pt :lock ctrl?)))
            (on-end []
              (let [shape @drawing-shape
                    shpos @drawing-position
