diff --git a/hysop/backend/device/opencl/operator/spatial_filtering.py b/hysop/backend/device/opencl/operator/spatial_filtering.py
index 2b191691719c2fceac5197fa2324216a9a172c97..b21e1cf15c174872176ec9e8d2a93c654c96f241 100644
--- a/hysop/backend/device/opencl/operator/spatial_filtering.py
+++ b/hysop/backend/device/opencl/operator/spatial_filtering.py
@@ -74,6 +74,7 @@ class OpenClSubgridLowpassFilter(SubgridLowpassFilterBase, OpenClSymbolic):
     @op_apply
     def apply(self, **kwds):
         evt = self.execute_kernels()
+        self.dFout.exchange_ghosts(queue=self.cl_env.default_queue)
 
 
 class OpenClSpectralLowpassFilter(SpectralLowpassFilterBase, OpenClOperator):
diff --git a/hysop/operator/base/spatial_filtering.py b/hysop/operator/base/spatial_filtering.py
index f2b25ee46e276c8bf8bf2f873191b4c5f398b9d7..51961f77d5e3d80bcfe419b8afa5ce49a075d33e 100644
--- a/hysop/operator/base/spatial_filtering.py
+++ b/hysop/operator/base/spatial_filtering.py
@@ -341,7 +341,7 @@ class SubgridLowpassFilterBase(LowpassFilterBase):
         super(SubgridLowpassFilterBase, self).discretize()
         dFin, dFout  = self.dFin, self.dFout
 
-        iratio =  dFin.compute_resolution / dFout.compute_resolution
+        iratio = self.dFin.topology_state.transposed(self.iratio)
         view = tuple(slice(None,None,r) for r in iratio)
         
         fin  = dFin.compute_buffers[0][view]