diff --git a/field_collection.module b/field_collection.module
index b5cfc07..57a77df 100644
--- a/field_collection.module
+++ b/field_collection.module
@@ -1250,7 +1250,25 @@ function field_collection_field_widget_embed_validate($element, &$form_state, $c
         $is_empty_string = (is_string($elements['#value']) && drupal_strlen(trim($elements['#value'])) == 0);
         $is_empty_value = ($elements['#value'] === 0);
         $is_empty_option = (isset($elements['#options']['_none']) && $elements['#value'] == '_none');
-        if ($is_empty_multiple || $is_empty_string || $is_empty_value || $is_empty_option) {
+
+        // Validate fields with hook_field_is_empty. This will handle cases when file entity passes validation when it shouldn't.
+        $is_empty_field = FALSE;
+        if (isset($elements['#field_name'])) {
+          $field = field_info_field($elements['#field_name']);
+          // Extract field values array with all columns from form_state.
+          // The field we're looking at is always 3 levels deeper than field collection field.
+          $field_depth = count($elements['#field_parents']) + 3;
+          $field_values = drupal_array_get_nested_value($form_state['values'], array_slice($elements['#array_parents'], 0, $field_depth));
+
+          // Special case lists since we don't get the correct array_parents.
+          if (in_array($field['module'], array('list', 'taxonomy'))) {
+            $field_values = $field_values[0];
+          }
+
+          $is_empty_field = module_invoke($field['module'], 'field_is_empty', $field_values, $field);
+        }
+
+        if ($is_empty_multiple || $is_empty_string || $is_empty_value || $is_empty_option || $is_empty_field) {
           if (isset($elements['#title'])) {
-            form_error($elements, t('!name field is required.', array('!name' => $elements['#title'])));
+            form_error($elements, t('@name field is required in the @collection collection.', array(
+              '@name' => $elements['#title'],
+              '@collection' => $instance['label']
+            )));
