diff --git a/projects/ospray.cmake b/projects/ospray.cmake
index dc1375a9245f887c6e889f61f513bd81bba11359..9d1f7514f003041f199f72e27e94b563ff3151ed 100644
--- a/projects/ospray.cmake
+++ b/projects/ospray.cmake
@@ -40,3 +40,5 @@ superbuild_add_project(ospray
 
 superbuild_add_extra_cmake_args(
   -DOSPRAY_INSTALL_DIR:PATH=<INSTALL_DIR>)
+superbuild_apply_patch(ospray type-conversion
+    "Fix type conversion error on icc 18.")
diff --git a/projects/patches/ospray-type-conversion.patch b/projects/patches/ospray-type-conversion.patch
new file mode 100644
index 0000000000000000000000000000000000000000..34037eeb6873783a183f55cb64373ab3ecd6c608
--- /dev/null
+++ b/projects/patches/ospray-type-conversion.patch
@@ -0,0 +1,23 @@
+diff --git a/ospray/fb/LocalFB.ispc b/ospray/fb/LocalFB.ispc
+index 913d16e..db130bb 100644
+--- a/ospray/fb/LocalFB.ispc
++++ b/ospray/fb/LocalFB.ispc
+@@ -164,12 +164,15 @@ export uniform float LocalFrameBuffer_accumulateTile(void *uniform _fb,
+ export void LocalFrameBuffer_accumulateAuxTile(void *uniform _fb
+     , const uniform Tile &tile
+     , uniform vec3f *uniform aux
+-    , const varying float * uniform ax
+-    , const varying float * uniform ay
+-    , const varying float * uniform az
++    , const void * uniform _ax
++    , const void * uniform _ay
++    , const void * uniform _az
+     )
+ {
+   uniform LocalFB *uniform fb  = (uniform LocalFB *uniform)_fb;
++  const varying float * uniform ax = (const varying float * uniform) _ax;
++  const varying float * uniform ay = (const varying float * uniform) _ay;
++  const varying float * uniform az = (const varying float * uniform) _az;
+ 
+   const uniform float accumID = tile.accumID;
+   const uniform float accScale = rcpf(tile.accumID + 1);