     );
   }
 
-  // last scene
-  if (a >= end2) {
+  if (a >= end2 && a < end3 + transitionTime) {
     res = opMorph(res,
       scene16(pos),
 
       // Timing
       end2,
+      transitionTime
+    );
+  }
+
+  // last scene
+  if (a >= end3) {
+    res = opMorph(res,
+      scene15(pos),
+
+      // Timing
+      end3,
       transitionTime
     );
   }

  ), 84.0);
}
vec2 scene16(vec3 pos) {
  vec3 offs = vec3(0.0, -0.35, 0.2);
  return vec2(opBlend_1(
    sdSphere(pos, .3),
    sdSphere(pos + offs, .3)
  ), 184.0);
}

vec2 map(in vec3 pos, in vec3 origin) {

  float transitionTime = 10.0;
  float end0 = 2.;
  float end1 = 14.;
  float end2 = 26.;
  float end3 = 38.;

  // Uncomment when debugging single scene
  //return scene16(pos);

  /* ---------- SCENES --------- */

