diff --git a/core/misc/dialog.js b/core/misc/dialog.js
index 44fd736af04cc3f913055ce8667f684a8ab6daad..94f21010c5866f8328da2449c5c1ec010238bd7f 100644
--- a/core/misc/dialog.js
+++ b/core/misc/dialog.js
@@ -10,10 +10,12 @@
 
 drupalSettings.dialog = {
   autoOpen: true,
+  // This option will turn off resizable and draggable.
   autoResize: true,
+  maxHeight: '95%',
   dialogClass: '',
-  close: function (e) {
-    Drupal.detachBehaviors(e.target, null, 'unload');
+  close: function (event) {
+    Drupal.detachBehaviors(event.target, null, 'unload');
   }
 };
 
@@ -24,9 +26,13 @@ Drupal.dialog = function (element, options) {
     // Trigger a global event to allow scripts to bind events to the dialog.
     $(window).trigger('dialog:beforecreate', [dialog, $element, settings]);
     $element.dialog(settings);
-    if (settings.autoResize !== 'false' && settings.autoResize !== false) {
-      $(window).on('resize.dialogResize scroll.dialogResize', autoResize);
-      resetPosition();
+    if (settings.autoResize === true || settings.autoResize === 'true') {
+      $element
+        .dialog('option', { resizable: false, draggable: false })
+        .dialog('widget').css('position', 'fixed');
+      $(window)
+        .on('resize.dialogResize scroll.dialogResize', settings, autoResize)
+        .trigger('resize.dialogResize');
     }
     dialog.open = true;
     $(window).trigger('dialog:aftercreate', [dialog, $element, settings]);
@@ -49,22 +55,23 @@ Drupal.dialog = function (element, options) {
    * be disabled by setting autoResize: false in the options array when creating
    * a new Drupal.dialog().
    */
-  function resetPosition () {
+  function resetPosition (event) {
     var positionOptions = ['width', 'height', 'minWidth', 'minHeight', 'maxHeight', 'maxWidth', 'position'];
     var windowHeight = $(window).height();
-    var adjustedOptions = $.extend({ position: { my: "center", at: "center", of: window }}, options);
-    var optionValue, adjustedValue;
+    var adjustedOptions = {};
+    var option, optionValue, adjustedValue;
     for (var n = 0; n < positionOptions.length; n++) {
-      if (adjustedOptions[positionOptions[n]]) {
-        optionValue = adjustedOptions[positionOptions[n]];
+      option = positionOptions[n];
+      optionValue = event.data[option];
+      if (optionValue) {
         // jQuery UI does not support percentages on heights, convert to pixels.
-        if (positionOptions[n].match(/height/i) && typeof optionValue === 'string' && optionValue.match(/%$/)) {
+        if (typeof optionValue === 'string' && /%$/.test(optionValue) && /height/i.test(option)) {
           adjustedValue = parseInt(0.01 * parseInt(optionValue, 10) * windowHeight, 10);
           // Don't force the dialog to be bigger vertically than needed.
-          if (positionOptions[n] === 'height' && $element.parent().outerHeight() < adjustedValue) {
+          if (option === 'height' && $element.parent().outerHeight() < adjustedValue) {
             adjustedValue = 'auto';
           }
-          adjustedOptions[positionOptions[n]] = adjustedValue;
+          adjustedOptions[option] = adjustedValue;
         }
       }
     }
diff --git a/core/modules/ckeditor/js/ckeditor.js b/core/modules/ckeditor/js/ckeditor.js
index 140f031e728df93794181721d6906e6a75f98304..2d1d42648c073ed0f167938eaced303cbcb18594 100644
--- a/core/modules/ckeditor/js/ckeditor.js
+++ b/core/modules/ckeditor/js/ckeditor.js
@@ -217,9 +217,7 @@ Drupal.ckeditor = {
     var classes = dialogSettings.dialogClass ? dialogSettings.dialogClass.split(' ') : [];
     classes.push('editor-dialog');
     dialogSettings.dialogClass = classes.join(' ');
-    dialogSettings.maxHeight = '95%';
-    dialogSettings.resizable = false;
-    dialogSettings.autoResize = $(window).width() > 600;
+    dialogSettings.autoResize = Drupal.checkWidthBreakpoint(600);
 
     // Add a "Loading…" message, hide it underneath the CKEditor toolbar, create
     // a Drupal.ajax instance to load the dialog and trigger it.