diff --git a/core/modules/outside_in/js/off-canvas.es6.js b/core/modules/outside_in/js/off-canvas.es6.js
index c711c2b4d5..e0ac6b71e2 100644
--- a/core/modules/outside_in/js/off-canvas.es6.js
+++ b/core/modules/outside_in/js/off-canvas.es6.js
@@ -155,6 +155,7 @@
       const offsets = displace.offsets;
       const $element = event.data.$element;
       const container = Drupal.offCanvas.getContainer($element);
+      const $elementScroll = $element.scrollTop();
 
       const topPosition = (offsets.top !== 0 ? `+${offsets.top}` : '');
       const adjustedOptions = {
@@ -174,6 +175,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 f5f65a49ac..61e76fe419 100644
--- a/core/modules/outside_in/js/off-canvas.js
+++ b/core/modules/outside_in/js/off-canvas.js
@@ -73,6 +73,7 @@
       var offsets = displace.offsets;
       var $element = event.data.$element;
       var container = Drupal.offCanvas.getContainer($element);
+      var $elementScroll = $element.scrollTop();
 
       var topPosition = offsets.top !== 0 ? '+' + offsets.top : '';
       var adjustedOptions = {
@@ -89,6 +90,8 @@
       });
 
       $element.dialog('option', adjustedOptions).trigger('dialogContentResize.off-canvas');
+
+      $element.scrollTop($elementScroll);
     },
     bodyPadding: function bodyPadding(event) {
       if ($('body').outerWidth() < Drupal.offCanvas.minDisplaceWidth) {
