diff --git a/modules/file/file.css b/modules/file/file.css
index aed1a9d..40451b8 100644
--- a/modules/file/file.css
+++ b/modules/file/file.css
@@ -19,10 +19,6 @@
   padding: 1px 5px 2px 5px;
 }
 
-.form-managed-file div.ajax-progress div {
-  display: inline;
-}
-
 .form-managed-file div.ajax-progress-bar {
   display: none;
   margin-top: 4px;
diff --git a/modules/file/file.field.inc b/modules/file/file.field.inc
index 2af3cb6..83f7ace 100644
--- a/modules/file/file.field.inc
+++ b/modules/file/file.field.inc
@@ -482,6 +482,7 @@ function file_field_widget_form(&$form, &$form_state, $field, $instance, $langco
     '#upload_validators' => file_field_widget_upload_validators($field, $instance),
     '#value_callback' => 'file_field_widget_value',
     '#process' => array_merge($element_info['#process'], array('file_field_widget_process')),
+    '#progress_indicator' => $instance['widget']['settings']['progress_indicator'],
     // Allows this field to return an array instead of a single value.
     '#extended' => TRUE,
   );
diff --git a/modules/file/file.module b/modules/file/file.module
index 83de0f6..33e6830 100644
--- a/modules/file/file.module
+++ b/modules/file/file.module
@@ -45,7 +45,6 @@ function file_menu() {
   );
   $items['file/progress'] = array(
     'page callback' => 'file_ajax_progress',
-    'delivery callback' => 'ajax_deliver',
     'access arguments' => array('access content'),
     'theme callback' => 'ajax_base_page_theme',
     'type' => MENU_CALLBACK,
@@ -381,7 +380,8 @@ function file_managed_file_process($element, &$form_state, $form) {
     '#weight' => -5,
   );
 
-  $ajax_settings['progress']['type'] ? $ajax_settings['progress']['type'] == 'bar' : 'throbber';
+  // Set up the remove button use throbber or none.
+  $ajax_settings['progress']['type'] = ($element['#progress_indicator'] == 'none') ? 'none' : 'throbber';
   $ajax_settings['progress']['message'] = NULL;
   $ajax_settings['effect'] = 'none';
   $element['remove_button'] = array(
@@ -409,6 +409,8 @@ function file_managed_file_process($element, &$form_state, $form) {
         '#type' => 'hidden',
         '#value' => $upload_progress_key,
         '#attributes' => array('class' => array('file-progress')),
+        // Uploadprogress extension requires this field to be at the top of the form.
+        '#weight' => -20,
       );
     }
     elseif ($implementation == 'apc') {
