diff --git a/pyopencl/array.py b/pyopencl/array.py
index c8fd1ed4c94d3f66a5cee52d433884b99a7be2c2..713771f6534f208edf469c940fc4efdf7264b7e7 100644
--- a/pyopencl/array.py
+++ b/pyopencl/array.py
@@ -859,12 +859,9 @@ class Array(object):
         if queue is not None:
             return self.__class__(queue, self.shape, dtype,
                     allocator=self.allocator, strides=strides)
-        elif self.allocator is not None:
-            return self.__class__(self.allocator, self.shape, dtype,
-                    strides=strides)
         else:
             return self.__class__(self.context, self.shape, dtype,
-                    strides=strides)
+                    strides=strides, allocator=self.allocator)
 
     # }}}