diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6326f8a9c87f3fa2932c1fbbc07a38a9ce53346b..949d705362d4bcb4128d6783a2aaa7467ab75edd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ Note that since we don't clearly distinguish between a public and private interf
 
 - Add occlusion color parameter
 - Fix issue with outlines and orthographic camera
+- Reduce over-blurring occlusion at larger view distances
 
 ## [v3.31.4] - 2023-02-24
 
diff --git a/src/mol-gl/shader/ssao-blur.frag.ts b/src/mol-gl/shader/ssao-blur.frag.ts
index 11429476796ef2f0064b498c72e92c02475049eb..eb18948f3e9db2b1f917e4cab87cadd6066f96a4 100644
--- a/src/mol-gl/shader/ssao-blur.frag.ts
+++ b/src/mol-gl/shader/ssao-blur.frag.ts
@@ -74,6 +74,8 @@ void main(void) {
     float kernelSum = 0.0;
     // only if kernelSize is odd
     for (int i = -dOcclusionKernelSize / 2; i <= dOcclusionKernelSize / 2; i++) {
+        if (abs(i) > 1 && abs(float(i)) * pixelSize > 0.5) continue;
+
         vec2 sampleCoords = coords + float(i) * offset;
         if (outsideBounds(sampleCoords)) {
             continue;