 core/modules/ckeditor/js/plugins/drupalimage/plugin.js        |    4 ++--
 core/modules/ckeditor/js/plugins/drupalimagecaption/plugin.js |    7 +++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/core/modules/ckeditor/js/plugins/drupalimage/plugin.js b/core/modules/ckeditor/js/plugins/drupalimage/plugin.js
index 1a82348..4b579d5 100644
--- a/core/modules/ckeditor/js/plugins/drupalimage/plugin.js
+++ b/core/modules/ckeditor/js/plugins/drupalimage/plugin.js
@@ -89,8 +89,8 @@ CKEDITOR.plugins.add('drupalimage', {
             imageDOMElement = imageElement.$;
 
             // Width and height are populated by actual dimensions.
-            existingValues.width = imageDOMElement ? imageDOMElement.width : '';
-            existingValues.height = imageDOMElement ? imageDOMElement.height : '';
+            existingValues.width = imageDOMElement ? imageDOMElement.naturalWidth : '';
+            existingValues.height = imageDOMElement ? imageDOMElement.naturalHeight : '';
             // Populate all other attributes by their specified attribute values.
             var attribute = null, attributeName;
             for (var key = 0; key < imageDOMElement.attributes.length; key++) {
diff --git a/core/modules/ckeditor/js/plugins/drupalimagecaption/plugin.js b/core/modules/ckeditor/js/plugins/drupalimagecaption/plugin.js
index 013a3aa..c37b99d 100644
--- a/core/modules/ckeditor/js/plugins/drupalimagecaption/plugin.js
+++ b/core/modules/ckeditor/js/plugins/drupalimagecaption/plugin.js
@@ -114,6 +114,13 @@ CKEDITOR.plugins.add('drupalimagecaption', {
         if (this.data.data_align) {
           el.attributes['data-align'] = this.data.data_align;
         }
+
+        if (!this.data.width) {
+          el.attributes['data-cke-saved-width'] = this.parts.image.$.naturalWidth;
+        }
+        if (!this.data.height) {
+          el.attributes['data-cke-saved-height'] = this.parts.image.$.naturalHeight;
+        }
       },
 
       _selectionWillCreateInlineImage: function () {
