diff --git a/pystencils/backends/opencl_backend.py b/pystencils/backends/opencl_backend.py
index 4217e9384644d86db7c225c0bd092c9fac7f1558..b5da806bb7d4993e4d10fc9615902171d455da1b 100644
--- a/pystencils/backends/opencl_backend.py
+++ b/pystencils/backends/opencl_backend.py
@@ -73,7 +73,7 @@ class OpenClSympyPrinter(CudaSympyPrinter):
         function_name, dimension = tuple(symbol_name.split("."))
         dimension = self.DIMENSION_MAPPING[dimension]
         function_name = self.INDEXING_FUNCTION_MAPPING[function_name]
-        return f"{function_name}({dimension})"
+        return f"int({function_name}({dimension}))"
 
     def _print_TextureAccess(self, node):
         raise NotImplementedError()
diff --git a/pystencils/opencl/opencljit.py b/pystencils/opencl/opencljit.py
index f1df02936b035d178eed91f1c4ed2fd05a31e44c..5526c954a1cc25438710576a0119abd65ab9854d 100644
--- a/pystencils/opencl/opencljit.py
+++ b/pystencils/opencl/opencljit.py
@@ -30,6 +30,16 @@ def make_python_function(kernel_function_node, opencl_queue, opencl_ctx, argumen
     if argument_dict is None:
         argument_dict = {}
 
+    # check if double precision is supported and required
+    if any([d.double_fp_config == 0 for d in opencl_ctx.devices]):
+        for param in kernel_function_node.get_parameters():
+            if param.symbol.dtype.base_type:
+                if param.symbol.dtype.base_type.numpy_dtype == np.float64:
+                    raise ValueError('OpenCL device does not support double precision')
+            else:
+                if param.symbol.dtype.numpy_dtype == np.float64:
+                    raise ValueError('OpenCL device does not support double precision')
+
     # Changing of kernel name necessary since compilation with default name "kernel" is not possible (OpenCL keyword!)
     kernel_function_node.function_name = "opencl_" + kernel_function_node.function_name
     header_list = ['"opencl_stdint.h"'] + list(get_headers(kernel_function_node))