diff --git a/js/threeViews/threeView.js b/js/threeViews/threeView.js
index 0a371ad5b0a1f83b3dad73d8c403251a0ab158c9..35fe4767cd7f0129ebd03fb12df6ca2ab5841fa1 100644
--- a/js/threeViews/threeView.js
+++ b/js/threeViews/threeView.js
@@ -59,29 +59,42 @@ ThreeView = Backbone.View.extend({
 
     mouseUp: function(){
         this.mouseIsDown = false;
+
+        if (!this.highlighter.visible) return;
+
+        var cell = new Cell(this.highlighter.geometry.vertices[0]);
+        window.three.render();
     },
 
     mouseDown: function(e){
         this.mouseIsDown = true;
 
-        if (!this.highlighter.visible) return;
 
-        var cell = new Cell(this.highlighter.geometry.vertices[0]);
-        window.three.render();
 
 
     },
 
     mouseMoved: function(e){
 
-        if (this.mouseIsDown) return;//in the middle of a drag event
+        if (this.mouseIsDown) {
+            this.highlighter.visible = false;
+            window.three.render();
+            return;
+        }//in the middle of a drag event
 
         var vector = new THREE.Vector2(2*(e.pageX-this.$el.offset().left)/this.$el.width()-1, 1-2*(e.pageY-this.$el.offset().top)/this.$el.height());
         var camera = this.model.camera;
         this.mouseProjection.setFromCamera(vector, camera);
         var intersections = this.mouseProjection.intersectObjects(this.model.objects, true);
 
-        if (intersections.length == 0) return;
+        //check if we're intersecting anything
+        if (intersections.length == 0) {
+            if (this.highlighter.visible) {
+                this.highlighter.visible = false;
+                window.three.render();
+            }
+            return;
+        }
 
         //check if we've moved to a new face
         var intersection = intersections[0].face;