diff --git a/src/cell.c b/src/cell.c
index 5258180fa006bb1e6a07b050b125ccb1ecdc95f8..e7003a6e7ba9f0382050d5304e3638a7a6f2749d 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -3268,7 +3268,7 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
             scheduler_activate_recv(s, ci->mpi.recv, task_subtype_rho);
 
 #ifdef EXTRA_HYDRO_LOOP
-            scheduler_activate(s, ci->mpi.hydro.recv_gradient);
+            scheduler_activate_recv(s, ci->mpi.recv, task_subtype_gradient);
 #endif
           }
         }
@@ -3318,7 +3318,7 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
             scheduler_activate_recv(s, cj->mpi.recv, task_subtype_rho);
 
 #ifdef EXTRA_HYDRO_LOOP
-            scheduler_activate(s, cj->mpi.hydro.recv_gradient);
+            scheduler_activate_recv(s, cj->mpi.recv, task_subtype_gradient);
 #endif
           }
         }
diff --git a/src/cell.h b/src/cell.h
index 1c7c70c331f5e5f4fac6de1f6fe5661f7c15c533..b275fa26350104ceb621ce658cc15810abe8afa6 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -581,9 +581,6 @@ struct cell {
     };
 
     struct {
-      /* Task receiving hydro data (gradient). */
-      struct task *recv_gradient;
-
       /* Task receiving data (time-step). */
       struct task *recv_ti;
     } hydro;
diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c
index 2f447aafdde535895fc2bc1e145a71c50f41e3d0..257fc70c5cc18d540805e7a24a6d02b9bd18759b 100644
--- a/src/engine_maketasks.c
+++ b/src/engine_maketasks.c
@@ -330,7 +330,7 @@ void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
 
   engine_addlink(e, &c->mpi.recv, t_xv);
   engine_addlink(e, &c->mpi.recv, t_rho);
-  c->mpi.hydro.recv_gradient = t_gradient;
+  engine_addlink(e, &c->mpi.recv, t_gradient);
   c->mpi.hydro.recv_ti = t_ti;
 
   /* Add dependencies. */
diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c
index c2a73e699115374ffa7c55ffe94f1349803746b1..f4b84b303a2f3a60da36417a84339c5b1c1d180e 100644
--- a/src/engine_marktasks.c
+++ b/src/engine_marktasks.c
@@ -366,7 +366,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
             if (ci_active_hydro) {
               scheduler_activate_recv(s, ci->mpi.recv, task_subtype_rho);
 #ifdef EXTRA_HYDRO_LOOP
-              scheduler_activate(s, ci->mpi.hydro.recv_gradient);
+              scheduler_activate_recv(s, ci->mpi.recv, task_subtype_gradient);
 #endif
             }
           }
@@ -410,7 +410,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
             if (cj_active_hydro) {
               scheduler_activate_recv(s, cj->mpi.recv, task_subtype_rho);
 #ifdef EXTRA_HYDRO_LOOP
-              scheduler_activate(s, cj->mpi.hydro.recv_gradient);
+              scheduler_activate_recv(s, cj->mpi.recv, task_subtype_gradient);
 #endif
             }
           }
diff --git a/src/space.c b/src/space.c
index 510d2cc7f40a306c1cafd9111a3855ebbc257c14..f00d43d3272deb77ede5836e8174ae06ca0382ba 100644
--- a/src/space.c
+++ b/src/space.c
@@ -269,7 +269,6 @@ void space_rebuild_recycle_mapper(void *map_data, int num_elements,
     c->mpi.tag = -1;
 
     c->mpi.recv = NULL;
-    c->mpi.hydro.recv_gradient = NULL;
     c->mpi.hydro.recv_ti = NULL;
     c->mpi.grav.recv = NULL;
     c->mpi.grav.recv_ti = NULL;
@@ -577,7 +576,6 @@ void space_regrid(struct space *s, int verbose) {
 #ifdef WITH_MPI
           c->mpi.tag = -1;
           c->mpi.recv = NULL;
-          c->mpi.hydro.recv_gradient = NULL;
           c->mpi.send = NULL;
 #endif  // WITH_MPI
           if (s->with_self_gravity) c->grav.multipole = &s->multipoles_top[cid];