diff --git modules/dashboard/dashboard.js modules/dashboard/dashboard.js
index dc9019d..30c7d99 100644
--- modules/dashboard/dashboard.js
+++ modules/dashboard/dashboard.js
@@ -160,32 +160,31 @@ Drupal.behaviors.dashboard = {
     $('#dashboard').addClass('customize-inactive');
     var item = $(ui.item);
 
-    // If the user dragged a disabled block, load the block contents.
-    if (item.hasClass('disabled-block')) {
+    // If the user dragged a disabled block out of the disabled region, load the
+    // block contents.
+    if (item.hasClass('disabled-block') && !item.parent().hasClass('disabled-blocks')) {
       var module, delta, itemClass;
       itemClass = item.attr('class');
       // Determine the block module and delta.
       module = itemClass.match(/\bmodule-(\S+)\b/)[1];
       delta = itemClass.match(/\bdelta-(\S+)\b/)[1];
-
+      item.removeClass('disabled-block');
       // Load the newly enabled block's content.
       $.get(Drupal.settings.dashboard.blockContent + '/' + module + '/' + delta, {},
         function (block) {
           if (block) {
-            item.html(block);
+            item.replaceWith(block);
           }
-
           if (item.find('div.content').is(':empty')) {
             item.find('div.content').html(Drupal.settings.dashboard.emptyBlockText);
           }
-
-          Drupal.attachBehaviors(item);
+          Drupal.attachBehaviors("#dashboard");
         },
         'html'
       );
-      // Remove the "disabled-block" class, so we don't reload its content the
-      // next time it's dragged.
-      item.removeClass("disabled-block");
+    }
+    else if (item.parent().hasClass('disabled-blocks')) {
+      item.addClass('disabled-block');
     }
 
     Drupal.behaviors.dashboard.addPlaceholders();
diff --git modules/dashboard/dashboard.module modules/dashboard/dashboard.module
index 1917c87..7b1537b 100644
--- modules/dashboard/dashboard.module
+++ modules/dashboard/dashboard.module
@@ -525,6 +525,14 @@ function dashboard_show_block_content($module, $delta) {
   $block_object->enabled = $block_object->page_match = TRUE;
   $blocks[$module . "_" . $delta] = $block_object;
   $block_content = _block_render_blocks($blocks);
+  // Ensure the block has a subject.
+  foreach ($block_content as $key => $value) {
+    if (empty($value->subject)) {
+      $info = module_invoke($module, 'block_info');
+      $value->subject = $info[$delta]['info'];
+      $block_content[$key] = $value;
+    }
+  }
   $build = _block_get_renderable_array($block_content);
   $rendered_block = drupal_render($build);
   print $rendered_block;
