diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 89925d8c81dbdea6e7e1806f3563809a6a539503..1e9d0328f48b3e5db81dcb5729c1ef77f8c5f203 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -272,7 +272,8 @@ var dw_mediamanager = {
         cb = String.prototype.match.call(document.location, /&onselect=([^&]+)/);
         cb = cb ? cb[1].replace(/[^\w]+/, '') : 'dw_mediamanager_item_select';
 
-        opener[cb](edid, id, opts, dw_mediamanager.align);
+        // arguments here only match the dw_mediamanager_item_select function, these will need to change if you override cb with onselect GET param
+        opener[cb](edid, id, opts, dw_mediamanager.align, dw_mediamanager.keepopen);
         if (!dw_mediamanager.keepopen) {
             window.close();
         }
@@ -937,14 +938,28 @@ var dw_mediamanager = {
  * @param {string} opts
  * @param {string} align [none, left, center, right]
  */
-function dw_mediamanager_item_select(edid, mediaid, opts, align) {
+function dw_mediamanager_item_select(edid, mediaid, opts, align, keepopen) {
     var alignleft = '';
     var alignright = '';
+
+    // Get the 2 characters after the cursor to check if we're currently inside an image tag
+    var cursorInImageTag = false;
+    var textArea = jQuery('#' + edid)[0];
+    var selection = DWgetSelection(textArea);
+    selection.end = selection.end + 2;
+    var charsAfterCursor = selection.getText();
+    if (charsAfterCursor === '}}') {
+        cursorInImageTag = true;
+    }
+
     if (align !== '1') {
         alignleft = align === '2' ? '' : ' ';
         alignright = align === '4' ? '' : ' ';
     }
-
+    if (keepopen && cursorInImageTag) {
+        selection.start = selection.start + 2;
+        DWsetSelection(selection);
+    }
     insertTags(edid, '{{' + alignleft + mediaid + opts + alignright + '|', '}}', '');
 }