diff --git a/context.module b/context.module
index a204040..6987924 100644
--- a/context.module
+++ b/context.module
@@ -534,10 +534,12 @@ function _context_registry($key = NULL, $reset = FALSE) {
  */
 function context_block_view_alter(&$data, $block) {
   if (context_isset('context_ui', 'context_ui_editor_present') && empty($data['content'])) {
-    $data['content']['#markup'] = "<div class='context-block-empty'>" . t('This block appears empty when displayed on this page.') . "</div>";
+    $data['content']['#markup'] = "<div class='context-block-empty-content'>" . t('This block appears empty when displayed on this page.') . "</div>";
+    $data['context_block_hidden'] = TRUE;
   }
 }
 
+//classes_array
 /**
  * implement hook_page_alter()
  *
@@ -548,3 +550,15 @@ function context_page_alter(&$page) {
     $plugin->execute($page);
   }
 }
+
+/**
+ * hook_block_view_alter - if the context editor block is on this page,
+ * ensure that all blocks have some content so that empty blocks are
+ * not dropped
+ */
+function context_preprocess_block(&$vars) {
+  if (isset($vars['block']->context_block_hidden)) {
+    $vars['classes_array'][] = 'context-block-hidden';
+    $vars['classes_array'][] = 'context-block-empty';
+  }
+}
\ No newline at end of file
diff --git a/plugins/context_reaction_block.css b/plugins/context_reaction_block.css
index c6de1fa..de42f0b 100644
--- a/plugins/context_reaction_block.css
+++ b/plugins/context_reaction_block.css
@@ -125,7 +125,7 @@ body.context-editing  .draggable:hover a.context-block-remove {
 
  .context-block-hidden { display:none !important; }
 
- .block  .context-block-empty {
+ .block  .context-block-empty-content {
   text-align:center;
   padding:10px;
   opacity:.5;
diff --git a/plugins/context_reaction_block.js b/plugins/context_reaction_block.js
index d7fc6ab..36933a1 100644
--- a/plugins/context_reaction_block.js
+++ b/plugins/context_reaction_block.js
@@ -173,6 +173,9 @@ DrupalContextBlockEditor.prototype.initBlocks = function(blocks) {
   var self = this;
   this.blocks = blocks;
   blocks.each(function() {
+    if($(this).hasClass('context-block-empty')) {
+      $(this).removeClass('context-block-hidden');
+    }
     $(this).addClass('draggable');
     $(this).prepend($('<a class="context-block-handle"></a>'));
     $(this).prepend($('<a class="context-block-remove"></a>').click(function() {
@@ -419,6 +422,9 @@ DrupalContextBlockEditor.prototype.editFinish = function() {
   // Remove UI elements.
   $(this.blocks).each(function() {
     $('a.context-block-handle, a.context-block-remove', this).remove();
+    if($(this).hasClass('context-block-empty')) {
+      $(this).addClass('context-block-hidden');
+    }
     $(this).removeClass('draggable');
   });
   this.regions.sortable('destroy');
