diff --git a/core/modules/outside_in/js/off-canvas.es6.js b/core/modules/outside_in/js/off-canvas.es6.js
index 01262bef02..aceed74be6 100644
--- a/core/modules/outside_in/js/off-canvas.es6.js
+++ b/core/modules/outside_in/js/off-canvas.es6.js
@@ -31,6 +31,7 @@
     const offsets = displace.offsets;
     const $element = event.data.$element;
     const $widget = $element.dialog('widget');
+    const $elementScroll = $element.scrollTop();
 
     const adjustedOptions = {
       // @see http://api.jqueryui.com/position/
@@ -49,6 +50,9 @@
     $element
       .dialog('option', adjustedOptions)
       .trigger('dialogContentResize.off-canvas');
+
+    // Reset the elements scroll position after being repositioned.
+    $element.scrollTop($elementScroll);
   }
 
   /**
diff --git a/core/modules/outside_in/js/off-canvas.js b/core/modules/outside_in/js/off-canvas.js
index 16c89ab1bb..85a9e53675 100644
--- a/core/modules/outside_in/js/off-canvas.js
+++ b/core/modules/outside_in/js/off-canvas.js
@@ -16,6 +16,7 @@
     var offsets = displace.offsets;
     var $element = event.data.$element;
     var $widget = $element.dialog('widget');
+    var $elementScroll = $element.scrollTop();
 
     var adjustedOptions = {
       position: {
@@ -31,6 +32,8 @@
     });
 
     $element.dialog('option', adjustedOptions).trigger('dialogContentResize.off-canvas');
+
+    $element.scrollTop($elementScroll);
   }
 
   function handleDialogResize(event) {
