diff --git a/file_entity.field.inc b/file_entity.field.inc
index 5a82f23..75ebf16 100644
--- a/file_entity.field.inc
+++ b/file_entity.field.inc
@@ -281,19 +281,16 @@ function file_entity_field_formatter_view($entity_type, $entity, $field, $instan
 
   switch ($display['type']) {
     case 'file_rendered':
-      $files = array();
-
       foreach ($items as $delta => $item) {
-        if (!empty($item['file'])) {
-          $files[$item['fid']] = $item['file'];
+        // Protect ourselves from recursive rendering.
+        static $depth = 0;
+        $depth++;
+        if ($depth > 20) {
+          throw new Exception(t('Recursive rendering detected when rendering entity file(@entity_id). Aborting rendering.', array('@entity_id' => $item['fid'])));
         }
-      }
 
-      if (!empty($files)) {
-        $output = file_view_multiple($files, $settings['file_view_mode'], 0, $langcode);
-
-        // Remove the first level from the output array.
-        $element = reset($output);
+        $element[$delta] = file_view((object) $item, $settings['file_view_mode'], 0, $langcode);
+        $depth = 0;
       }
       break;
 
