 .../ckeditor/Plugin/CKEditorPlugin/DrupalImage.php |    6 ++--
 core/modules/editor/editor.admin.inc               |   30 ++++++++++++++++++--
 .../lib/Drupal/editor/Form/EditorImageDialog.php   |    2 +-
 .../standard/config/editor.editor.basic_html.yml   |    8 +++---
 .../standard/config/editor.editor.full_html.yml    |    8 +++---
 5 files changed, 39 insertions(+), 15 deletions(-)

diff --git a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php
index 3c1cde8..7e95109 100644
--- a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php
+++ b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php
@@ -72,10 +72,7 @@ public function settingsForm(array $form, array &$form_state, Editor $editor) {
     form_load_include($form_state, 'inc', 'editor', 'editor.admin');
     $form['image_upload'] = editor_image_upload_settings_form($editor);
     $form['image_upload']['#attached']['library'][] = array('ckeditor', 'drupal.ckeditor.drupalimage.admin');
-    $form['image_upload']['#element_validate'] = array(
-      array($this, 'validateImageUploadSettings'),
-    );
-
+    $form['image_upload']['#element_validate'][] = array($this, 'validateImageUploadSettings');
     return $form;
   }
 
@@ -87,6 +84,7 @@ public function settingsForm(array $form, array &$form_state, Editor $editor) {
    *
    * @see \Drupal\editor\Form\EditorImageDialog
    * @see editor_image_upload_settings_form()
+   * @see editor_image_upload_settings_validate()
    */
   function validateImageUploadSettings(array $element, array &$form_state) {
     $settings = &$form_state['values']['editor']['settings']['plugins']['drupalimage']['image_upload'];
diff --git a/core/modules/editor/editor.admin.inc b/core/modules/editor/editor.admin.inc
index 911accc..0236b4c 100644
--- a/core/modules/editor/editor.admin.inc
+++ b/core/modules/editor/editor.admin.inc
@@ -6,6 +6,7 @@
  */
 
 use Drupal\editor\Entity\Editor;
+use Drupal\Component\Utility\NestedArray;
 
 /**
  * Subform constructor to configure the text editor's image upload settings.
@@ -104,7 +105,7 @@ function editor_image_upload_settings_form(Editor $editor) {
     '#title' => t('Width'),
     '#title_display' => 'invisible',
     '#type' => 'number',
-    '#default_value' => $editor->image_upload['max_dimensions']['width'],
+    '#default_value' => ($editor->image_upload['max_dimensions']['width'] === 0) ? '' : $editor->image_upload['max_dimensions']['width'],
     '#size' => 8,
     '#maxlength' => 8,
     '#min' => 1,
@@ -117,7 +118,7 @@ function editor_image_upload_settings_form(Editor $editor) {
     '#title' => t('Height'),
     '#title_display' => 'invisible',
     '#type' => 'number',
-    '#default_value' => $editor->image_upload['max_dimensions']['height'],
+    '#default_value' => ($editor->image_upload['max_dimensions']['height'] === 0) ? '' : $editor->image_upload['max_dimensions']['height'],
     '#size' => 8,
     '#maxlength' => 8,
     '#min' => 1,
@@ -127,5 +128,30 @@ function editor_image_upload_settings_form(Editor $editor) {
     '#states' => $show_if_image_uploads_enabled,
   );
 
+  $form['#element_validate'] = array(
+    'editor_image_upload_settings_validate',
+  );
+
   return $form;
 }
+
+/**
+ * #element_validate handler for editor_image_upload_settings_validate().
+ *
+ * Ensures each form item's value is cast to the proper type.
+ *
+ * @see \Drupal\editor\Form\EditorImageDialog
+ * @ingroup forms
+ */
+function editor_image_upload_settings_validate(array $element, array &$form_state) {
+  $cast_value = function($type, $element) use (&$form_state) {
+    $section = $element['#parents'];
+    $value = NestedArray::getValue($form_state['values'], $section);
+    settype($value, $type);
+    NestedArray::setValue($form_state['values'], $section, $value);
+  };
+
+  $cast_value('bool', $element['status']);
+  $cast_value('int', $element['max_dimensions']['width']);
+  $cast_value('int', $element['max_dimensions']['height']);
+}
diff --git a/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php b/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php
index 1811bcd..d7ef08c 100644
--- a/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php
+++ b/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php
@@ -82,7 +82,7 @@ public function buildForm(array $form, array &$form_state, FilterFormat $filter_
 
     // If the editor has image uploads enabled, show a managed_file form item,
     // otherwise show a (file URL) text form item.
-    if ($editor->image_upload['status'] === '1') {
+    if ($editor->image_upload['status']) {
       $form['attributes']['src']['#access'] = FALSE;
       $form['attributes']['src']['#required'] = FALSE;
     }
diff --git a/core/profiles/standard/config/editor.editor.basic_html.yml b/core/profiles/standard/config/editor.editor.basic_html.yml
index e321d30..155c5fb 100644
--- a/core/profiles/standard/config/editor.editor.basic_html.yml
+++ b/core/profiles/standard/config/editor.editor.basic_html.yml
@@ -32,12 +32,12 @@ settings:
     stylescombo:
       styles: ''
 image_upload:
-  status: '1'
+  status: true
   scheme: public
   directory: inline-images
   max_size: ''
   max_dimensions:
-    width: ''
-    height: ''
-status: '1'
+    width: 0
+    height: 0
+status: true
 langcode: en
diff --git a/core/profiles/standard/config/editor.editor.full_html.yml b/core/profiles/standard/config/editor.editor.full_html.yml
index 3a61cf8..2e70cfd 100644
--- a/core/profiles/standard/config/editor.editor.full_html.yml
+++ b/core/profiles/standard/config/editor.editor.full_html.yml
@@ -45,12 +45,12 @@ settings:
     stylescombo:
       styles: ''
 image_upload:
-  status: '1'
+  status: true
   scheme: public
   directory: inline-images
   max_size: ''
   max_dimensions:
-    width: ''
-    height: ''
-status: '1'
+    width: 0
+    height: 0
+status: true
 langcode: en
