diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 0b6ca26..c891659 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -126,8 +126,19 @@ function block_theme_initialize($theme) {
       // If the region isn't supported by the theme, assign the block to the
       // theme's default region.
       if (!isset($regions[$block->getRegion()])) {
-        $block->setRegion(system_default_region($theme));
-      }
+        $default_block = system_get_info('theme', $theme)['block_default_region'];
+        if (isset($default_block)) {
+          if (isset($regions[$default_block])) {
+            $block->setRegion($default_block);
+            }
+          else {
+            $block->setRegion(system_default_region($theme));
+            }
+          }
+        else {
+          $block->setRegion(system_default_region($theme));
+          }
+        }
       $block->save();
     }
   }
