diff --git a/plugins/context_reaction_block.inc b/plugins/context_reaction_block.inc
index 7aaedae..d63672d 100644
--- a/plugins/context_reaction_block.inc
+++ b/plugins/context_reaction_block.inc
@@ -57,7 +57,7 @@ class context_reaction_block extends context_reaction {
       '#tree' => TRUE,
       '#theme' => 'context_block_regions_form',
     );
-    foreach (system_region_list($theme_key) as $region => $label) {
+    foreach ($this->get_active_regions('visible') as $region => $label) {
       $form['blocks'][$region] = array(
         '#type' => 'item',
         '#title' => $label,
@@ -253,7 +253,7 @@ class context_reaction_block extends context_reaction {
    */
   protected function is_enabled_region($region) {
     global $theme;
-    $regions = array_keys(system_region_list($theme));
+    $regions = array_keys($this->get_active_regions());
     return in_array($region, $regions, TRUE);
   }
 
@@ -606,4 +606,31 @@ class context_reaction_block extends context_reaction {
     echo drupal_to_js(array('status' => 0));
     exit;
   }
+
+  /**
+   * Get all regions for all active themes.
+   */
+  function get_active_regions($show = 'all') {
+    $regions = array();
+    $default_theme = variable_get('theme_default', 'garland');
+    foreach (list_themes() as $theme) {
+      if ($theme->status) {
+        foreach (system_region_list($theme->name, $show) as $theme_region => $desc) {
+          if (!array_key_exists($theme_region, $regions)) {
+            $regions[$theme_region] = array();
+          }
+          if ($theme->name == $default_theme) {
+            $regions[$theme_region][] = '<strong>' . $theme->name . '</strong>';
+          }
+          else {
+            $regions[$theme_region][] = $theme->name;
+          }
+        }
+      }
+    }
+    foreach ($regions as $region => $themes) {
+      $regions[$region] = $region . ' (' . implode(', ', $themes) . ')';
+    }
+    return $regions;
+  }
 }
