diff --git a/src/publicapi.js b/src/publicapi.js
index 162e438..f5df089 100644
--- a/src/publicapi.js
+++ b/src/publicapi.js
@@ -145,6 +145,7 @@
     var ctrlr = this.__controller, root = ctrlr.root;
     if (!jQuery.contains(root.jQ[0], target)) target = root.jQ[0];
     ctrlr.seek($(target), clientX + pageXOffset, clientY + pageYOffset);
+    if (ctrlr.blurred) this.focus();
     return this;
   };
   _.ignoreNextMousedown = function(fn) {
diff --git a/src/services/mouse.js b/src/services/mouse.js
index acdf7a7..b2b543a 100644
--- a/src/services/mouse.js
+++ b/src/services/mouse.js
@@ -13,6 +13,9 @@
       var ctrlr = root.controller, cursor = ctrlr.cursor, blink = cursor.blink;
       var textareaSpan = ctrlr.textareaSpan, textarea = ctrlr.textarea;
 
+      e.preventDefault(); // doesn't work in IE≤8, but it's a one-line fix:
+      e.target.unselectable = true; // http://jsbin.com/yagekiji/1
+
       if (cursor.options.ignoreNextMousedown(e)) return;
       else cursor.options.ignoreNextMousedown = noop;
 
@@ -46,8 +49,6 @@
         if (!ctrlr.editable) rootjQ.prepend(textareaSpan);
         textarea.focus();
       }
-      e.preventDefault(); // doesn't work in IE≤8, but it's a one-line fix:
-      e.target.unselectable = true; // http://jsbin.com/yagekiji/1
 
       cursor.blink = noop;
       ctrlr.seek($(e.target), e.pageX, e.pageY).cursor.startSelection();
diff --git a/test/unit/publicapi.test.js b/test/unit/publicapi.test.js
index 4a81f74..9264c3e 100644
--- a/test/unit/publicapi.test.js
+++ b/test/unit/publicapi.test.js
@@ -779,7 +779,9 @@
       var clientY = box.top + 40;
       var target = document.elementFromPoint(clientX, clientY);
 
+      assert.equal(document.activeElement, document.body);
       mq.clickAt(clientX, clientY, target).write('x');
+      assert.equal(document.activeElement, $(mq.el()).find('textarea')[0]);
 
       assert.equal(mq.latex(), "\\frac{mmmm}{mmxmm}");
 
@@ -801,7 +803,9 @@
       var clientX = box.left + 30;
       var clientY = box.top + 40;
 
+      assert.equal(document.activeElement, document.body);
       mq.clickAt(clientX, clientY).write('x');
+      assert.equal(document.activeElement, $(mq.el()).find('textarea')[0]);
 
       assert.equal(mq.latex(), "\\frac{mmmm}{mmxmm}");
 
