diff --git a/arraycontext/impl/pyopencl/__init__.py b/arraycontext/impl/pyopencl/__init__.py
index a737428dacba2fe71b04349a797b5d05d630d3f2..585a99eac5279fdeb06f7ef76166c58744837c1d 100644
--- a/arraycontext/impl/pyopencl/__init__.py
+++ b/arraycontext/impl/pyopencl/__init__.py
@@ -161,7 +161,7 @@ class PyOpenCLArrayContext(ArrayContext):
         return cl_array.to_device(self.queue, array, allocator=self.allocator)
 
     def to_numpy(self, array):
-        if not self._force_device_scalars and np.isscalar(array):
+        if np.isscalar(array):
             return array
 
         return array.get(queue=self.queue)
diff --git a/arraycontext/impl/pytato/__init__.py b/arraycontext/impl/pytato/__init__.py
index 672a2859bfaf8fc58d6233fdb0b2b1e3b40c13dd..a7a0b1b2bbde4118e94d43fc07971992881d2e30 100644
--- a/arraycontext/impl/pytato/__init__.py
+++ b/arraycontext/impl/pytato/__init__.py
@@ -105,6 +105,9 @@ class PytatoPyOpenCLArrayContext(ArrayContext):
         return pt.make_data_wrapper(cl_array)
 
     def to_numpy(self, array):
+        if np.isscalar(array):
+            return array
+
         cl_array = self.freeze(array)
         return cl_array.get(queue=self.queue)