diff --git a/src/scheduler.c b/src/scheduler.c
index 5beab065ffe0c135b2cbb247c531728c5238b865..fd283b0f25bf1837ddd52a9b1c49815b2b339d4c 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -230,6 +230,7 @@ void scheduler_write_dependencies(struct scheduler *s, int verbose) {
   }
 
   int density_cluster[4] = {0};
+  int gradient_cluster[4] = {0};
   int force_cluster[4] = {0};
   int gravity_cluster[4] = {0};
 
@@ -251,6 +252,8 @@ void scheduler_write_dependencies(struct scheduler *s, int verbose) {
         for (int k = 0; k < 4; ++k) {
           if (type == task_type_self + k && subtype == task_subtype_density)
             density_cluster[k] = 1;
+          if (type == task_type_self + k && subtype == task_subtype_gradient)
+            gradient_cluster[k] = 1;
           if (type == task_type_self + k && subtype == task_subtype_force)
             force_cluster[k] = 1;
           if (type == task_type_self + k && subtype == task_subtype_grav)
@@ -280,9 +283,18 @@ void scheduler_write_dependencies(struct scheduler *s, int verbose) {
               subtaskID_names[task_subtype_force]);
   fprintf(f, "\t};\n");
 
-  /* Make a cluster for the gravity tasks */
+  /* Make a cluster for the gradient tasks */
   fprintf(f, "\t subgraph cluster2{\n");
   fprintf(f, "\t\t label=\"\";\n");
+  for (int k = 0; k < 4; ++k)
+    if (gradient_cluster[k])
+      fprintf(f, "\t\t \"%s %s\";\n", taskID_names[task_type_self + k],
+              subtaskID_names[task_subtype_gradient]);
+  fprintf(f, "\t};\n");
+
+  /* Make a cluster for the gravity tasks */
+  fprintf(f, "\t subgraph cluster3{\n");
+  fprintf(f, "\t\t label=\"\";\n");
   for (int k = 0; k < 2; ++k)
     if (gravity_cluster[k])
       fprintf(f, "\t\t \"%s %s\";\n", taskID_names[task_type_self + k],