   GD.RestoreContext();
 
   int et = t - 720;
-  int sun_x = (GD.w * 16) - (et << 2),
-      sun_y = (100 * 16) + (et << 1);
+  int sun_x = (GD.w * VXSCALE) - (et << 2),
+      sun_y = (100 * VXSCALE) + (et << 1);
   GD.SaveContext();
   GD.PointSize(52 * 16);
   GD.ColorRGB(0x000000);

    float yy = x * model_mat[1] + y * model_mat[4] + z * model_mat[7];
    float zz = x * model_mat[2] + y * model_mat[5] + z * model_mat[8] + distance;
    float q = hw / (100 + zz);
    dst->x = 16 * (hw       + xx * q);
    dst->y = 16 * (GD.h / 2 + yy * q);
    dst->z = zz;
    dst++;
  }

////////////////////////////////////////////////////////////////////////////////
//                                  3D Projection
////////////////////////////////////////////////////////////////////////////////

static byte VXSCALE = 16;

static float model_mat[9] = { 1.0, 0.0, 0.0,
                        0.0, 1.0, 0.0,
