diff --git a/cps.module b/cps.module
index 78b8318..2638251 100644
--- a/cps.module
+++ b/cps.module
@@ -867,14 +867,17 @@ function cps_unpublish_changeset_entities($changeset_id, $previous_changeset_id)
   try {
     foreach ($changed as $entity_type => $entity_ids) {
       foreach ($entity_ids as $entity_id) {
-        $vid = db_query('SELECT revision_id FROM {cps_entity} WHERE entity_type = :entity_type AND entity_id = :entity_id AND changeset_id = :changeset_id AND published = 0', array(
+        // If the entity existed in the previous changeset ID, use that version.
+        $vid = db_query('SELECT revision_id FROM {cps_entity} WHERE entity_type = :entity_type AND entity_id = :entity_id AND changeset_id = :changeset_id', array(
           'entity_type' => $entity_type,
           'entity_id' => $entity_id,
-          'changeset_id' => $changeset_id,
+          'changeset_id' => $previous_changeset_id,
         ))->fetchField();
         if ($vid) {
           cps_make_revision_published($entity_type, $entity_id, $previous_changeset_id);
         }
+        // Otherwise assume the entity was new in the changeset, and publish the
+        // 'initial' version.
         else {
           cps_make_revision_published($entity_type, $entity_id, 'initial');
         }
diff --git a/includes/forms.inc b/includes/forms.inc
index 504b314..076c889 100644
--- a/includes/forms.inc
+++ b/includes/forms.inc
@@ -344,17 +344,13 @@ function cps_changeset_unpublish_changeset_form_submit($form, &$form_state) {
     'operations' => array(
       array('cps_changeset_publish_batch_lock', array()),
       array('cps_changeset_unpublish_batch_variables', array($form_state['entity'], $form_state['previous'])),
+      array('cps_changeset_unpublish_batch_entity', array()),
     ),
     'finished' => 'cps_changeset_unpublish_batch_finished',
     'title' => t('Reverting %changeset', array('%changeset' => $form_state['entity']->name)),
     'file' => drupal_get_path('module', 'cps') . '/includes/forms.inc',
   );
 
-  foreach (cps_get_supported() as $entity_type) {
-    // For every entity type we support, add another operation for that entity type.
-    $batch['operations'][] = array('cps_changeset_unpublish_batch_entity', array());
-  }
-
   drupal_alter('cps_unpublish_changeset_batch', $batch, $form_state);
 
   batch_set($batch);
