diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index df047e7..f177fae 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -1007,6 +1007,9 @@ function taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities
   // for the next processing step.
   $process_parents = array();
   $process_parents[] = $parent;
+  
+  // Cloned parent default status
+  $cloned = FALSE;  
 
   // Loops over the parent terms and adds its children to the tree array.
   // Uses a loop instead of a recursion, because it's more efficient.
@@ -1019,10 +1022,16 @@ function taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities
       $child = current($children[$vid][$parent]);
       do {
         if (empty($child)) {
+          // No more childs left set $cloned flag to default value FALSE
+          $cloned = FALSE;
           break;
         }
         $term = $load_entities ? $term_entities[$child] : $terms[$vid][$child];
-        if (count($parents[$vid][$term->tid]) > 1) {
+        if (count($parents[$vid][$term->tid]) > 1 || $cloned) {
+          // Set $cloned flag to TRUE to clone every child in order to maintain
+          // the correct depth for all childs.
+          $cloned = TRUE;
+          
           // We have a term with multi parents here. Clone the term,
           // so that the depth attribute remains correct.
           $term = clone $term;
