diff --git a/js/cam/Assembler.js b/js/cam/Assembler.js
index 3863168c777e0c7b0b153fc9589813ff7e6d9223..3f9e9f259e1740e234a421f7472a2a01ee85e829 100644
--- a/js/cam/Assembler.js
+++ b/js/cam/Assembler.js
@@ -166,13 +166,12 @@ Assembler = Backbone.Model.extend({
     _moveOrigin: function(){
         var position = this.get("originPosition");
         this.get("origin").position.set(position.x, position.y, position.z);
-        if (this.get("stockFixed")) this._updateStockPosToOrigin(position);
+        if (this.get("stockFixed")) this._updateStockPosToOrigin(position, this.previous("originPosition"));
         dmaGlobals.three.render();
         if (this.get("machine").setMachinePosition) this.get("machine").setMachinePosition();
     },
 
-    _updateStockPosToOrigin: function(newOrigin){
-        var lastOrigin = this.previous("originPosition");
+    _updateStockPosToOrigin: function(newOrigin, lastOrigin){
         var newStockPosition = _.clone(this.get("stockPosition"));
         _.each(_.keys(newStockPosition), function(key){
             newStockPosition[key] += newOrigin[key] - lastOrigin[key];
diff --git a/js/menus/CamMenuView.js b/js/menus/CamMenuView.js
index 46e594eaf25f45060a22b30fdb7dc7eb91d6be04..1540dcd735a7b57e4736438898f1f6111f309461 100644
--- a/js/menus/CamMenuView.js
+++ b/js/menus/CamMenuView.js
@@ -77,11 +77,10 @@ CamMenuView = Backbone.View.extend({
         e.preventDefault();
         var newVal = this._getNumber(e);
         if (newVal == null) return;
-        var object = this.assembler.get(property);
+        var object = _.clone(this.assembler.get(property));
         if ($(e.target).data("type")) {
             object[$(e.target).data("type")] = newVal;
-            this.assembler.trigger("change:" + property);
-            this.assembler.trigger("change");
+            this.assembler.set(property, object);
         }
         else this.assembler.set(property, newVal);
     },