diff --git a/src/cell.c b/src/cell.c
index 2c89b4f536046f39202842df85385261c9604c32..585aa65acb5c0d00439e65970e666e838f8b8659 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -2302,6 +2302,7 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
     if (c->timestep != NULL) scheduler_activate(s, c->timestep);
     if (c->end_force != NULL) scheduler_activate(s, c->end_force);
     if (c->grav_down != NULL) scheduler_activate(s, c->grav_down);
+    if (c->grav_mesh != NULL) scheduler_activate(s, c->grav_mesh);
     if (c->grav_long_range != NULL) scheduler_activate(s, c->grav_long_range);
   }
 
diff --git a/src/engine.c b/src/engine.c
index ee8975e604d3d68aaffa116336dc4a74ecbc2feb..9ae1e59ee1ee7292393ce0a43eb6992d8bae6802 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -3592,7 +3592,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
     }
 
     /* Gravity stuff ? */
-    else if (t->type == task_type_grav_down ||
+    else if (t->type == task_type_grav_down || t->type == task_type_grav_mesh ||
              t->type == task_type_grav_long_range ||
              t->type == task_type_init_grav) {
       if (cell_is_active_gravity(t->ci, e)) scheduler_activate(s, t);
diff --git a/src/task.c b/src/task.c
index 2e2e2f039343bfbeeb2d581b9aa9402168df7778..255dadbb3953408b9bf83b2be47725bfb49f43cd 100644
--- a/src/task.c
+++ b/src/task.c
@@ -180,6 +180,7 @@ __attribute__((always_inline)) INLINE static enum task_actions task_acts_on(
 
     case task_type_drift_gpart:
     case task_type_grav_down:
+    case task_type_grav_mesh:
       return task_action_gpart;
       break;
 
@@ -290,6 +291,7 @@ void task_unlock(struct task *t) {
       break;
 
     case task_type_drift_gpart:
+    case task_type_grav_mesh:
       cell_gunlocktree(ci);
       break;
 
@@ -385,6 +387,7 @@ int task_lock(struct task *t) {
       break;
 
     case task_type_drift_gpart:
+    case task_type_grav_mesh:
       if (ci->ghold) return 0;
       if (cell_glocktree(ci) != 0) return 0;
       break;