diff --git a/uuid_features.module b/uuid_features.module
index a96efd7..4113f33 100644
--- a/uuid_features.module
+++ b/uuid_features.module
@@ -134,7 +134,7 @@ function uuid_features_settings($form, &$form_state) {
   $entity_info = entity_get_info();
 
   foreach ($entity_info as $type => $info) {
-    foreach($info['bundles'] as $bundle => $bundle_info) {
+    foreach ($info['bundles'] as $bundle => $bundle_info) {
       $bundles[$type][$bundle] = $bundle_info['label'];
     }
     if (isset($info['uuid features']) && $info['uuid features'] === TRUE) {
@@ -276,9 +276,9 @@ function uuid_features_file_field_export(&$export, $entity_type) {
       if (in_array($info['type'], $supported_fields)) {
         // we need to loop into each language because i18n translation can build
         // fields with different language than the node one.
-        foreach($field as $language => $files) {
+        foreach ($field as $language => $files) {
           if (is_array($files)) {
-            foreach($files as $i => $file) {
+            foreach ($files as $i => $file) {
 
               // convert file to array to stay into the default uuid_features_file format
               $file = (object) $file;
@@ -345,7 +345,7 @@ function uuid_features_file_field_import(&$import, $entity_type) {
   // Get all fields from this bundle.
   $fields = field_info_instances($entity_type, $import_bundle);
 
-  foreach($fields as $field_instance) {
+  foreach ($fields as $field_instance) {
     // Load field info to check the type.
     $field = &$import->{$field_instance['field_name']};
     $info = field_info_field($field_instance['field_name']);
@@ -354,9 +354,9 @@ function uuid_features_file_field_import(&$import, $entity_type) {
     if (in_array($info['type'], $supported_fields)) {
       // We need to loop into each language because i18n translation can build
       // fields with different language than the term one.
-      foreach($field as $language => $files) {
+      foreach ($field as $language => $files) {
         if (is_array($files)) {
-          foreach($files as $i => $file) {
+          foreach ($files as $i => $file) {
             // Convert file to array to stay into the default uuid_features_file format.
             $file = (object)$file;
             $result = _uuid_features_file_field_import_file($file);
@@ -496,3 +496,79 @@ function _uuid_features_file_field_import_file(&$file) {
 
   return TRUE;
 }
+
+
+/**
+ * Implements hook_field_default_field_instances_alter().
+ * Alter the field instances right before they are cached into the database.
+ *
+ * @param &$fields
+ *   By reference. The fields that have been declared by another feature.
+ */
+function uuid_features_field_default_field_instances_alter(&$fields) {
+  // Ensure the default values of taxonomy term reference fields are exported as uuids
+  foreach ($fields as $field_name => $field) {
+    if (!empty($field['default_value'])) {
+      $default_values = array();
+
+      foreach ($field['default_value'] as $key => $value) {
+        if (isset($value['uuid']) && isset($value['tid'])) {
+          $terms = entity_uuid_load('taxonomy_term', array($value['uuid']), array(), TRUE);
+          $term = array_shift($terms);
+          if ($term) {
+            if (empty($term->uuid)) {
+              watchdog ('uuid_features', 'The uuid of term %tid could not be found.', array('%tid' => $term->tid));
+            }
+            else {
+              $default_values[] = array(
+                  'uuid' => $term->uuid,
+                  'tid' => $term->tid,
+              );
+            }
+          }
+        }
+      }
+
+      if (!empty($default_values)) {
+        $fields[$field_name]['default_value'] = $default_values;
+      }
+    }
+  }
+}
+
+/**
+ * Implements hook_features_export_alter().
+ */
+function uuid_features_features_export_alter(&$export, $module_name = '') {
+  if (!empty($export['features']['field_instance'])) {
+    foreach ($export['features']['field_instance'] as $identifier) {
+      // Ensure the configured default value of a term reference field is properly set.
+      if ($instance = features_field_instance_load($identifier)) {
+        if (!empty($instance['default_value']) && isset($instance['default_value'][0]['tid'])) {
+          $default_values = array();
+
+          foreach ($instance['default_value'] as $key => $value) {
+            if (isset($value['tid']) && !isset($value['uuid'])) {
+              if ($term = taxonomy_term_load($value['tid'])) {
+                if (empty($term->uuid)) {
+                  watchdog ('uuid_features', 'The uuid of term %tid could not be found.', array('%tid' => $term->tid));
+                }
+                else {
+                  $default_values[] = array (
+                    'uuid' => $term->uuid,
+                    'tid' => $term->tid,
+                  );
+                }
+              }
+            }
+          }
+
+          if (!empty($default_values)) {
+            $instance['default_value'] = $default_values;
+            field_update_instance($instance);
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
