diff --git a/src/space.c b/src/space.c
index 4dc1369882675f7ec4f4f1aa0d136bd85711345a..0e7c74b3b8999514fa438f4604243a6d197e5d3c 100644
--- a/src/space.c
+++ b/src/space.c
@@ -2903,7 +2903,17 @@ void space_init(struct space *s, const struct swift_params *params,
   s->nr_queues = 1; /* Temporary value until engine construction */
 
   /* Are we generating gas from the DM-only ICs? */
-  if (generate_gas_in_ics) space_generate_gas(s, cosmo, verbose);
+  if (generate_gas_in_ics) {
+    space_generate_gas(s, cosmo, verbose);
+    parts = s->parts;
+    gparts = s->gparts;
+    Npart = s->nr_parts;
+    Ngpart = s->nr_gparts;
+  }
+
+#ifdef SWIFT_DEBUG_CHECKS
+  part_verify_links(parts, gparts, sparts, Npart, Ngpart, Nspart, 1);
+#endif
 
   /* Are we replicating the space ? */
   if (replicate < 1)
@@ -2919,6 +2929,10 @@ void space_init(struct space *s, const struct swift_params *params,
     Nspart = s->nr_sparts;
   }
 
+#ifdef SWIFT_DEBUG_CHECKS
+  part_verify_links(parts, gparts, sparts, Npart, Ngpart, Nspart, 1);
+#endif
+
   /* Decide on the minimal top-level cell size */
   const double dmax = max3(s->dim[0], s->dim[1], s->dim[2]);
   int maxtcells =
@@ -3209,7 +3223,8 @@ void space_generate_gas(struct space *s, const struct cosmology *cosmo,
     error("Failed to allocate new gpart array.");
 
   /* Start by copying the gparts */
-  memcpy(gparts + nr_gparts, gparts, nr_gparts * sizeof(struct gpart));
+  memcpy(gparts, s->gparts, nr_gparts * sizeof(struct gpart));
+  memcpy(gparts + nr_gparts, s->gparts, nr_gparts * sizeof(struct gpart));
 
   /* And zero the parts */
   bzero(parts, s->nr_parts * sizeof(struct part));
@@ -3223,8 +3238,8 @@ void space_generate_gas(struct space *s, const struct cosmology *cosmo,
   for (size_t i = 0; i < nr_gparts; ++i) {
 
     struct part *p = &parts[i];
-    struct gpart *gp_dm = &gparts[i];
-    struct gpart *gp_gas = &gparts[nr_gparts + i];
+    struct gpart *gp_gas = &gparts[i];
+    struct gpart *gp_dm = &gparts[nr_gparts + i];
 
     /* Set the IDs */
     p->id = gp_gas->id_or_neg_offset * 2 + 1;