diff --git a/title.module b/title.module
index 05f7dfa..a0a7d63 100644
--- a/title.module
+++ b/title.module
@@ -158,12 +158,22 @@ function title_entity_presave($entity, $entity_type) {
     if (!isset($translations->data[$langcode])) {
       $langcode = isset($translations->hook[$langcode]['hook']) && $translations->hook[$langcode]['hook'] == 'delete' ? FALSE : $entity_langcode;
     }
+    // If a translation is being added, ensure this is used as the active
+    // langcode.
+    if (isset($translations->hook)) {
+      foreach ($translations->hook as $key => $hook) {
+        if ($hook['hook'] == 'insert') {
+          $langcode = $key;
+          continue;
+        }
+      }
+    }
   }
 
   // Perform reverse synchronization to retain any change in the legacy field
   // values. We must avoid doing this twice as we might overwrite the already
   // synchronized values, if we are updating an existing entity.
-  if ($langcode) {
+  if ($langcode == $entity_langcode) {
     title_entity_sync($entity_type, $entity, $langcode, TRUE);
   }
 
