diff --git a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
index 735cfce..1731c54 100644
--- a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
+++ b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php
@@ -173,6 +173,12 @@ public static function process($element, FormStateInterface $form_state, $form)
         $variables['width'] = $element['#value']['width'];
         $variables['height'] = $element['#value']['height'];
       }
+      // In the case of a multiple upload, do not retrieve the image dimensions
+      // as it can lead to all images having the same dimensions. The correct
+      // dimensions will be calculated in ImageItem::preSave().
+      elseif (count($element['#files']) > 1) {
+        $variables['width'] = $variables['height'] = NULL;
+      }
       else {
         $image = \Drupal::service('image.factory')->get($file->getFileUri());
         if ($image->isValid()) {
diff --git a/core/modules/image/src/Tests/ImageFieldWidgetMultipleTest.php b/core/modules/image/src/Tests/ImageFieldWidgetMultipleTest.php
new file mode 100644
index 0000000..0053c2f
--- /dev/null
+++ b/core/modules/image/src/Tests/ImageFieldWidgetMultipleTest.php
@@ -0,0 +1,80 @@
+<?php
+
+namespace Drupal\image\Tests;
+
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\node\Entity\Node;
+
+/**
+ * Tests the image field widget with multiple ajax uploads.
+ *
+ * This will need to be converted to a PhpUnit test once the following issues
+ * land: https://www.drupal.org/node/2917885 https://www.drupal.org/node/2870448
+ *
+ * @group image
+ */
+class ImageFieldWidgetMultipleTest extends ImageFieldTestBase {
+
+  /**
+   * @var \Drupal\Core\File\FileSystem
+   */
+  protected $fileSystem;
+
+  /**
+   * @var \Drupal\Core\Image\ImageFactory
+   */
+  protected $imageFactory;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->fileSystem = $this->container->get('file_system');
+    $this->imageFactory = $this->container->get('image.factory');
+  }
+
+  /**
+   * Tests file widget element allowing multiple images.
+   */
+  public function testWidgetElementMultipleUploads() {
+    // Check for image widget in add/node/article page
+    $field_name = 'images';
+    $min_resolution = 5;
+    $max_resolution = 100;
+    $field_settings = [
+      'max_resolution' => $max_resolution . 'x' . $max_resolution,
+      'min_resolution' => $min_resolution . 'x' . $min_resolution,
+      'alt_field' => 0,
+    ];
+    $this->createImageField($field_name, 'article', ['cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED], $field_settings, [], [], 'Image test on [site:name]');
+    $this->drupalGet('node/add/article');
+    $this->assertNotEqual(0, count($this->xpath('//input[contains(@multiple, "multiple")]')), 'Multiple Images should be allowed.');
+
+    $test_images = [
+      // image-2.jpg
+      0 => $this->drupalGetTestFiles('image')[5],
+      // image-1.png
+      1 => $this->drupalGetTestFiles('image')[7],
+    ];
+    $edit = ['files[' . $field_name . '_0][]' => []];
+    foreach ($test_images as $delta => $test_image) {
+      $edit['files[' . $field_name . '_0][]'][$delta] = $this->fileSystem->realpath($test_image->uri);
+    }
+    $this->drupalPostAjaxForm(NULL, $edit, $field_name . '_0_upload_button');
+    $this->drupalPostForm(NULL, ['title[0][value]' => 'Image upload'], 'Save');
+    $node = Node::load(1);
+
+    foreach ($node->{$field_name} as $delta => $image) {
+      $test_image = $test_images[$delta];
+      $original_image = $this->imageFactory->get($test_image->uri);
+      if ($original_image->getWidth() > $max_resolution || $original_image->getHeight() > $max_resolution) {
+        $original_image->scale($max_resolution, $max_resolution);
+      }
+      $this->assertEqual($image->width, (int) $original_image->getWidth(), 'Stored width of image #' . $delta . ' is ' . $original_image->getWidth() . 'px');
+      $this->assertEqual($image->height, (int) $original_image->getHeight(), 'Stored height of image #' . $delta . ' is ' . $original_image->getHeight() . 'px');
+    }
+  }
+
+}
