diff --git a/modules/geom/src/vec4.cc b/modules/geom/src/vec4.cc
index 6052187f26fd77130fdf3c33930fd492b2782d80..8f53869a97983bea6f0ae6adc116327cfe9323bd 100644
--- a/modules/geom/src/vec4.cc
+++ b/modules/geom/src/vec4.cc
@@ -54,11 +54,13 @@ Vec4::Vec4(const Real d[4])
   this->set(d[0],d[1],d[2],d[3]);
 }
 
-/*Vec4::Vec4(const float d[4])
+#if OST_DOUBLE_PRECISION
+Vec4::Vec4(const float d[4])
 {
   this->set(d[0],d[1],d[2],d[3]);
 }
-*/
+#endif
+
 Vec4& Vec4::operator=(const Vec4& v)
 {
   if(&v!=this) {
diff --git a/modules/gfx/src/impl/calc_ambient.cc b/modules/gfx/src/impl/calc_ambient.cc
index c1e2cea98260e85cea6162f6d67f606e33947f45..2de06782962fc459bb756a45c29cb2c0a40a9d46 100644
--- a/modules/gfx/src/impl/calc_ambient.cc
+++ b/modules/gfx/src/impl/calc_ambient.cc
@@ -219,7 +219,7 @@ namespace {
 
 	// largest opening angle from reference entry to corners
 	float a0 = std::min(geom::Dot(dir0,dir1),std::min(geom::Dot(dir0,dir2),geom::Dot(dir0,dir3)));
-	if(eit->type==4) a0=std::min(a0,geom::Dot(dir0,dir4));
+	if(eit->type==4) a0=std::min(a0,static_cast<float>(geom::Dot(dir0,dir4)));
 	for(std::vector<RayEntry>::iterator rit=rays_.begin();rit!=rays_.end();++rit) {
 	  /*
 	    this _should_ be <0.0, and it should
@@ -276,14 +276,14 @@ namespace {
 	  //std::cerr << " " << hit_count << " / " << rays_.size() << std::endl;
 
 	  if(lit->type==3) {
-	    entry_accum[tlist[lit->id+0]]+=geom::Vec4(ratio,ratio,ratio,1.0);
-	    entry_accum[tlist[lit->id+1]]+=geom::Vec4(ratio,ratio,ratio,1.0);
-	    entry_accum[tlist[lit->id+2]]+=geom::Vec4(ratio,ratio,ratio,1.0);
+	    entry_accum[tlist[lit->id+0]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
+	    entry_accum[tlist[lit->id+1]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
+	    entry_accum[tlist[lit->id+2]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
 	  } else if(lit->type==4) {
-	    entry_accum[qlist[lit->id+0]]+=geom::Vec4(ratio,ratio,ratio,1.0);
-	    entry_accum[qlist[lit->id+1]]+=geom::Vec4(ratio,ratio,ratio,1.0);
-	    entry_accum[qlist[lit->id+2]]+=geom::Vec4(ratio,ratio,ratio,1.0);
-	    entry_accum[qlist[lit->id+3]]+=geom::Vec4(ratio,ratio,ratio,1.0);
+	    entry_accum[qlist[lit->id+0]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
+	    entry_accum[qlist[lit->id+1]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
+	    entry_accum[qlist[lit->id+2]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
+	    entry_accum[qlist[lit->id+3]]+=geom::Vec4(static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(ratio),static_cast<Real>(1.0));
 	  }
 	}
       }