diff --git a/pyopencl/array.py b/pyopencl/array.py
index 9a4718a14de9fe813788401d735afff548076ad9..996fd19ab8c17c63f58291f64afce48394668058 100644
--- a/pyopencl/array.py
+++ b/pyopencl/array.py
@@ -1568,7 +1568,7 @@ class Array(object):
 
                 array_stride = self.strides[array_axis]
 
-                new_shape.append((stop-start-1)//idx_stride+1)
+                new_shape.append((abs(stop-start)-1)//abs(idx_stride)+1)
                 new_strides.append(idx_stride*array_stride)
                 new_offset += array_stride*start