diff --git a/file_entity.admin.inc b/file_entity.admin.inc
index 0d23355..0e24997 100644
--- a/file_entity.admin.inc
+++ b/file_entity.admin.inc
@@ -16,7 +16,8 @@ function file_entity_admin_files($form, &$form_state) {
     // was selected.  Hand off to the callback of the operation at this point
     // which should return a confirm form.
     $operation = $form_state['values']['operation'];
-    return call_user_func_array($operation['callback'], array($form_state['values']['files']));
+    $files = array_keys(array_filter($form_state['values']['files']));
+    return call_user_func_array($operation['callback'], array($files));
   }
 
   $limit = variable_get('file_entity_admin_files_limit', 50);
diff --git a/file_entity.module b/file_entity.module
index ec68932..5b719ed 100644
--- a/file_entity.module
+++ b/file_entity.module
@@ -686,6 +686,10 @@ function file_entity_multiple_delete_confirm_operation($files) {
   // This function is a form generation function.
   $form = array();
   $form_state = array();
+  // Set the submit handler explicitly because this form is being built
+  // under a different form_id.
+  $form['#submit'] = array();
+  $form['#submit'][] = 'file_entity_multiple_delete_confirm_submit';
   return file_entity_multiple_delete_confirm($form, $form_state, $files);
 }
 
diff --git a/file_entity.pages.inc b/file_entity.pages.inc
index 05bf54e..98cc7bb 100644
--- a/file_entity.pages.inc
+++ b/file_entity.pages.inc
@@ -106,9 +106,6 @@ function file_entity_page_delete($file) {
  *   An array of file_ids to delete.
  */
 function file_entity_multiple_delete_confirm($form, &$form_state, $files, $redirect_path = NULL) {
-  $form = array();
-  $files = array_filter($files);
-
   $form['files'] = array('#tree' => TRUE);
   $form['file_titles'] = array('#theme' => 'item_list');
 
@@ -121,7 +118,6 @@ function file_entity_multiple_delete_confirm($form, &$form_state, $files, $redir
     $form['file_titles']['#items'][] = check_plain($file->filename);
   }
   $form['operation'] = array('#type' => 'hidden', '#value' => 'delete');
-  $form['#submit'][] = 'file_entity_multiple_delete_confirm_submit';
 
   $confirm_question = format_plural(count($files),
                                   'Are you sure you want to delete this file?',
@@ -151,7 +147,7 @@ function file_entity_multiple_delete_confirm_submit($form, &$form_state) {
       }
       else {
         $message = t('File @title was deleted', array('@title' => $file->filename));
-        $form_state['redirect'] = '<front>';
+        $form_state['redirect'] = user_access('administer files') ? 'admin/content/file' : '<front>';
         watchdog('file', $message);
         drupal_set_message($message);
       }
