diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp
index 0233f38..5a6041a 100644
--- a/src/mesa/main/ff_fragment_shader.cpp
+++ b/src/mesa/main/ff_fragment_shader.cpp
@@ -887,10 +887,10 @@ emit_texenv(struct texenv_fragment_program *p, GLuint unit)
       }
       else {
 	 float const_data[4] = {
-	    1 << rgb_shift,
-	    1 << rgb_shift,
-	    1 << rgb_shift,
-	    1 << alpha_shift
+	    static_cast<float>(1 << rgb_shift),
+	    static_cast<float>(1 << rgb_shift),
+	    static_cast<float>(1 << rgb_shift),
+	    static_cast<float>(1 << alpha_shift)
 	 };
 	 shift = new(p->mem_ctx) ir_constant(glsl_type::vec4_type,
 					     (ir_constant_data *)const_data);
