diff --git a/Effects/terrain-default.eff b/Effects/terrain-default.eff
index fa48f7a..f33f133 100644
--- a/Effects/terrain-default.eff
+++ b/Effects/terrain-default.eff
@@ -137,6 +137,11 @@
         int
         2 
       
+      
+        overlay
+        sampler-2d
+        3
+      
       
         lequal
         false
diff --git a/Shaders/default.frag b/Shaders/default.frag
index 52afbaf..161cd50 100644
--- a/Shaders/default.frag
+++ b/Shaders/default.frag
@@ -6,6 +6,7 @@ varying vec3 normal;
 varying float fogCoord;
 
 uniform sampler2D texture;
+uniform sampler2D overlay;
 
 float luminance(vec3 color)
 {
@@ -43,6 +44,9 @@ void main()
     // is closer to what the OpenGL fixed function pipeline does.
     color = clamp(color, 0.0, 1.0);
     texel = texture2D(texture, gl_TexCoord[0].st);
+    vec4 texel2 = texture2D(overlay, gl_TexCoord[3].st);
+    texel = mix(texel, texel2, texel2.a);
+
     fragColor = color * texel + specular;
     fogFactor = exp(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord);
     gl_FragColor = mix(gl_Fog.color, fragColor, fogFactor);
diff --git a/Shaders/default.vert b/Shaders/default.vert
index 74089f0..8babb99 100644
--- a/Shaders/default.vert
+++ b/Shaders/default.vert
@@ -26,6 +26,7 @@ void main()
     vec4 ecPosition = gl_ModelViewMatrix * gl_Vertex;
     gl_Position = ftransform();
     gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+    gl_TexCoord[3] = gl_TextureMatrix[3] * gl_MultiTexCoord3;
     normal = gl_NormalMatrix * gl_Normal;
     vec4 ambient_color, diffuse_color;
     if (colorMode == MODE_DIFFUSE) {