diff --git a/core/misc/dialog/dialog.js b/core/misc/dialog/dialog.js
index ea1e52c..7fa24c1 100644
--- a/core/misc/dialog/dialog.js
+++ b/core/misc/dialog/dialog.js
@@ -82,6 +82,12 @@
       // Trigger a global event to allow scripts to bind events to the dialog.
       $(window).trigger('dialog:beforecreate', [dialog, $element, settings]);
       $element.dialog(settings);
+
+      // If we're displaying the dialog as a modal, disable body scrolling.
+      if (settings.modal) {
+        $('body').css({overflow: 'hidden'});
+      }
+
       dialog.open = true;
       $(window).trigger('dialog:aftercreate', [dialog, $element, settings]);
     }
@@ -89,6 +95,12 @@
     function closeDialog(value) {
       $(window).trigger('dialog:beforeclose', [dialog, $element]);
       $element.dialog('close');
+
+      // If we're displaying the dialog as a modal, re-enable body scrolling.
+      if ($element.dialog('option', 'modal')) {
+        $('body').css({overflow: ''});
+      }
+
       dialog.returnValue = value;
       dialog.open = false;
       $(window).trigger('dialog:afterclose', [dialog, $element]);
