diff --git a/loopy/fusion.py b/loopy/fusion.py
index 434297b1b430ec27f013be9e6838ba321d22f8b7..3061388606cb512f6767902d512eea5d49f31970 100644
--- a/loopy/fusion.py
+++ b/loopy/fusion.py
@@ -101,9 +101,23 @@ def _fuse_two_kernels(knla, knlb):
     from pytools import UniqueNameGenerator
     insn_id_gen = UniqueNameGenerator(
             set([insna.id for insna in new_instructions]))
+
+    knl_b_instructions = []
+    old_b_id_to_new_b_id = {}
     for insnb in knlb.instructions:
+        old_id = insnb.id
+        new_id = insn_id_gen(old_id)
+        old_b_id_to_new_b_id[old_id] = new_id
+
+        knl_b_instructions.append(
+                insnb.copy(id=new_id))
+
+    for insnb in knl_b_instructions:
         new_instructions.append(
-                insnb.copy(id=insn_id_gen(insnb.id)))
+                insnb.copy(
+                    insn_deps=frozenset(
+                        old_b_id_to_new_b_id[dep_id]
+                        for dep_id in insnb.insn_deps)))
 
     # }}}