diff --git a/src/cell.c b/src/cell.c
index 8c25b17f9996027e383ceeba16ae8451c34b1c7b..427dee32a3a9b43514e66985dbd361363b791e08 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -2127,9 +2127,8 @@ void cell_clean(struct cell *c) {
  * @brief Clear the drift flags on the given cell.
  */
 void cell_clear_drift_flags(struct cell *c, void *data) {
-  cell_clear_flag(c, cell_flag_do_hydro_drift & cell_flag_do_hydro_sub_drift);
-  c->grav.do_drift = 0;
-  c->grav.do_sub_drift = 0;
+  cell_clear_flag(c, cell_flag_do_hydro_drift & cell_flag_do_hydro_sub_drift &
+                         cell_flag_do_grav_drift & cell_flag_do_grav_sub_drift);
   c->stars.do_drift = 0;
   c->stars.do_sub_drift = 0;
 }
@@ -2213,10 +2212,10 @@ void cell_activate_drift_part(struct cell *c, struct scheduler *s) {
 void cell_activate_drift_gpart(struct cell *c, struct scheduler *s) {
 
   /* If this cell is already marked for drift, quit early. */
-  if (c->grav.do_drift) return;
+  if (cell_get_flag(c, cell_flag_do_grav_drift)) return;
 
   /* Mark this cell for drifting. */
-  c->grav.do_drift = 1;
+  cell_set_flag(c, cell_flag_do_grav_drift);
 
   if (c->grav.drift_out != NULL) scheduler_activate(s, c->grav.drift_out);
 
@@ -2230,9 +2229,9 @@ void cell_activate_drift_gpart(struct cell *c, struct scheduler *s) {
     scheduler_activate(s, c->grav.drift);
   } else {
     for (struct cell *parent = c->parent;
-         parent != NULL && !parent->grav.do_sub_drift;
+         parent != NULL && !cell_get_flag(parent, cell_flag_do_grav_sub_drift);
          parent = parent->parent) {
-      parent->grav.do_sub_drift = 1;
+      cell_set_flag(parent, cell_flag_do_grav_sub_drift);
 
       if (parent->grav.drift_out) {
         scheduler_activate(s, parent->grav.drift_out);
@@ -4279,7 +4278,7 @@ void cell_drift_gpart(struct cell *c, const struct engine *e, int force) {
   struct gpart *const gparts = c->grav.parts;
 
   /* Drift irrespective of cell flags? */
-  force |= c->grav.do_drift;
+  force |= cell_get_flag(c, cell_flag_do_grav_drift);
 
 #ifdef SWIFT_DEBUG_CHECKS
   /* Check that we only drift local cells. */
@@ -4293,8 +4292,7 @@ void cell_drift_gpart(struct cell *c, const struct engine *e, int force) {
   if (c->grav.count == 0) {
 
     /* Clear the drift flags. */
-    c->grav.do_drift = 0;
-    c->grav.do_sub_drift = 0;
+    cell_clear_flag(c, cell_flag_do_grav_drift & cell_flag_do_grav_sub_drift);
 
     /* Update the time of the last drift */
     c->grav.ti_old_part = ti_current;
@@ -4305,7 +4303,7 @@ void cell_drift_gpart(struct cell *c, const struct engine *e, int force) {
   /* Ok, we have some particles somewhere in the hierarchy to drift */
 
   /* Are we not in a leaf ? */
-  if (c->split && (force || c->grav.do_sub_drift)) {
+  if (c->split && (force || cell_get_flag(c, cell_flag_do_grav_sub_drift))) {
 
     /* Loop over the progeny and collect their data. */
     for (int k = 0; k < 8; k++) {
@@ -4379,8 +4377,7 @@ void cell_drift_gpart(struct cell *c, const struct engine *e, int force) {
   }
 
   /* Clear the drift flags. */
-  c->grav.do_drift = 0;
-  c->grav.do_sub_drift = 0;
+  cell_clear_flag(c, cell_flag_do_grav_drift & cell_flag_do_grav_sub_drift);
 }
 
 /**
diff --git a/src/cell.h b/src/cell.h
index b31a229dcc89870204c5450377931729fa88dd38..7e2abf253cafb7001022b63befb69951a794b18d 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -481,12 +481,6 @@ struct cell {
     /*! Number of M-M tasks that are associated with this cell. */
     short int nr_mm_tasks;
 
-    /*! Does this cell need to be drifted (gravity)? */
-    char do_drift;
-
-    /*! Do any of this cell's sub-cells need to be drifted (gravity)? */
-    char do_sub_drift;
-
   } grav;
 
   /*! Stars variables */
diff --git a/src/space.c b/src/space.c
index 5dfbab9acddfaf5fa2e2b5a0bd376d1e40391b34..5904208fe54132c89dd7cd99df8bb26a2f1410f7 100644
--- a/src/space.c
+++ b/src/space.c
@@ -259,7 +259,6 @@ void space_rebuild_recycle_mapper(void *map_data, int num_elements,
     c->black_holes.parts = NULL;
     c->stars.do_sub_sort = 0;
     c->flags = 0;
-    c->grav.do_sub_drift = 0;
     c->stars.do_sub_drift = 0;
     c->black_holes.do_sub_drift = 0;
     c->hydro.ti_end_min = -1;
@@ -3321,7 +3320,6 @@ void space_split_recursive(struct space *s, struct cell *c,
       cp->hydro.super = NULL;
       cp->grav.super = NULL;
       cp->stars.do_sub_sort = 0;
-      cp->grav.do_sub_drift = 0;
       cp->flags = 0;
       cp->stars.do_sub_drift = 0;
       cp->black_holes.do_sub_drift = 0;