diff --git a/pyopencl/elementwise.py b/pyopencl/elementwise.py
index 8bcd174dd5a7741fd043ad46cacb2c46a55a2bfb..8d6941d5c9847abb804e2b806362e74643fbd457 100644
--- a/pyopencl/elementwise.py
+++ b/pyopencl/elementwise.py
@@ -440,6 +440,9 @@ def get_copy_kernel(context, dtype_dest, dtype_src):
     if dtype_dest.kind == "c" != dtype_src.kind:
         src = "%s_fromreal(%s)" % (complex_dtype_to_name(dtype_dest), src)
 
+    if dtype_dest.kind == "c" and dtype_src != dtype_dest:
+        src = "%s_cast(%s)" % (complex_dtype_to_name(dtype_dest), src),
+
     return get_elwise_kernel(context,
             "%(tp_dest)s *dest, %(tp_src)s *src" % {
                 "tp_dest": dtype_to_ctype(dtype_dest),