diff --git a/src/cell.c b/src/cell.c
index 7edee4d9ae1c02311af295bb6eba5c846a94259c..8386161a15cc110b9abc92e3539776cba0c918ec 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1745,9 +1745,9 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
           if (l == NULL) error("Missing link to send_xv task.");
           scheduler_activate(s, l->t);
 
-          /* Drift the cell which will be sent at the level at which it is sent,
-             i.e. drift the cell specified in the send task (l->t) itself. */
-          cell_activate_drift_part(l->t->ci, s);
+          /* Drift the cell which will be sent; note that not all sent
+             particles will be drifted, only those that are needed. */
+          cell_activate_drift_part(cj, s);
 
           if (cell_is_active(cj, e)) {
             struct link *l = NULL;
@@ -1802,9 +1802,9 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
           if (l == NULL) error("Missing link to send_xv task.");
           scheduler_activate(s, l->t);
 
-          /* Drift the cell which will be sent at the level at which it is sent,
-             i.e. drift the cell specified in the send task (l->t) itself. */
-          cell_activate_drift_part(l->t->ci, s);
+          /* Drift the cell which will be sent; note that not all sent
+             particles will be drifted, only those that are needed. */
+          cell_activate_drift_part(ci, s);
 
           if (cell_is_active(ci, e)) {
 
diff --git a/src/runner.c b/src/runner.c
index 04d230209a27d9c16d5ffbc0fffc9d5519e025d4..c32ba4bf76ae2cd06c28ed1d41b4ebf16abe0885 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -1544,11 +1544,6 @@ void runner_do_recv_part(struct runner *r, struct cell *c, int clear_sorts,
       time_bin_min = min(time_bin_min, parts[k].time_bin);
       time_bin_max = max(time_bin_max, parts[k].time_bin);
       h_max = max(h_max, parts[k].h);
-
-#ifdef SWIFT_DEBUG_CHECKS
-      if (parts[k].ti_drift != ti_current)
-        error("Received un-drifted particle !");
-#endif
     }
 
     /* Convert into a time */
diff --git a/src/scheduler.c b/src/scheduler.c
index 2e645951256d415b072cc964003d4042a842923d..6b60419cd579e3dbec28fc8d9345adf376ac85d5 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -1363,11 +1363,6 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
         } else if (t->subtype == task_subtype_xv ||
                    t->subtype == task_subtype_rho ||
                    t->subtype == task_subtype_gradient) {
-#ifdef SWIFT_DEBUG_CHECKS
-          for (int k = 0; k < t->ci->count; k++)
-            if (t->ci->parts[k].ti_drift != s->space->e->ti_current)
-              error("Sending un-drifted particle !");
-#endif
           err = MPI_Isend(t->ci->parts, t->ci->count, part_mpi_type,
                           t->cj->nodeID, t->flags, MPI_COMM_WORLD, &t->req);
           // message( "sending %i parts with tag=%i from %i to %i." ,