diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin
index 4f6382c184eabecbd335e26486b281b4cf4daf71..244d3109b31719f69a55fb44afa9fbad59362eca 100644
Binary files a/.gradle/8.3/executionHistory/executionHistory.bin and b/.gradle/8.3/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.3/executionHistory/executionHistory.lock b/.gradle/8.3/executionHistory/executionHistory.lock
index 62a6a9ee70cd6c52c2fa0a3291187888fb50fd26..f0a0d548fa2bf5167779ba4ef2fc08db563d52e6 100644
Binary files a/.gradle/8.3/executionHistory/executionHistory.lock and b/.gradle/8.3/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.3/fileHashes/fileHashes.bin b/.gradle/8.3/fileHashes/fileHashes.bin
index 51f71e9c932e0ab839e3009fc85e46e1dc2cc507..1bcd3d2077c1c745b28195521923b4bb7832d4bb 100644
Binary files a/.gradle/8.3/fileHashes/fileHashes.bin and b/.gradle/8.3/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.3/fileHashes/fileHashes.lock b/.gradle/8.3/fileHashes/fileHashes.lock
index 202e6a3ec2fc70ea7aa5e103dde72d55685e1238..fa57a03fd30a91dc84e7572cba89fd2e222b895a 100644
Binary files a/.gradle/8.3/fileHashes/fileHashes.lock and b/.gradle/8.3/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.3/fileHashes/resourceHashesCache.bin b/.gradle/8.3/fileHashes/resourceHashesCache.bin
index d8cea3c56d8fd758d5b408f209f4e99393965978..44f5a53db1d6bfa04daa25726b67cb602041a434 100644
Binary files a/.gradle/8.3/fileHashes/resourceHashesCache.bin and b/.gradle/8.3/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index db8fe93b84f4de9132047ab34768545b54d91dec..c67e44d64627719f90d37dff9e3057564156780d 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/Pixelate.class b/build/classes/java/main/Pixelate.class
index 729b874dccdc98ae4e426dd1f85f1616d6b58c6f..041c4854ceb226e3b5bcf70910786b772c7b871d 100644
Binary files a/build/classes/java/main/Pixelate.class and b/build/classes/java/main/Pixelate.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1
index 656924cc69183fd4d1c9f81a7bfd80f59a0b065c..2d0790e45beaf22ef523f964d26380d011468fc2 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 and b/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 64db03ff04a968e653af2394d4508cf16be25b92..54eb85396719eedc02338d65a0696205902c1cdc 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/Pixelate.java b/src/main/java/Pixelate.java
index 3c22ae5aaa07abf4c000ecac79b822ef51b1583f..713b50ba3358c1c94e530799a4717b966830e015 100644
--- a/src/main/java/Pixelate.java
+++ b/src/main/java/Pixelate.java
@@ -2,39 +2,51 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class Pixelate implements transform {
-    private int newPixelSize;
+    private final int newPixelSize;
 
     public Pixelate(int newPixelSize) {
         this.newPixelSize = newPixelSize;
     }
 
+    @Override
     public void applyTo(GrayImage image) {
-
-        GrayColor newColor = new ByteGrayColor();
-
-        for (int i = 0; i < image.getWidth() - this.newPixelSize; i += this.newPixelSize) {
-            for (int j = 0; j < image.getHeight() - this.newPixelSize; j += this.newPixelSize) {
-                newColor = averageColor(image, i, j);
-                for (int square1 = 0; square1 < this.newPixelSize; square1++)
-                    for (int square2 = 0; square2 < this.newPixelSize; square2++)
-                        image.setPixel(newColor, i+square1, j+square2);
-
-            }   
+        int width = image.getWidth();
+        int height = image.getHeight();
+
+        // On parcourt l’image par blocs de taille newPixelSize
+        for (int x = 0; x < width; x += newPixelSize) {
+            for (int y = 0; y < height; y += newPixelSize) {
+                // Calcul de la couleur moyenne pour le bloc courant
+                GrayColor average = averageColor(image, x, y, width, height);
+
+                // Application de la couleur moyenne à tous les pixels du bloc
+                for (int i = x; i < Math.min(x + newPixelSize, width); i++) {
+                    for (int j = y; j < Math.min(y + newPixelSize, height); j++) {
+                        image.setPixel(average, i, j);
+                    }
+                }
+            }
         }
     }
 
-    public GrayColor averageColor(GrayImage image, int x, int y) {
-        double average = 0;
-
-        for (int i = 0; i < this.newPixelSize; i++) {
-            for (int j = 0; j < this.newPixelSize; j++) {
-                average += image.getPixelGrayColor(x + i, y + j).getLuminosity();
+    /**
+     * Calcule la couleur moyenne d’un bloc de taille newPixelSize à partir de la position (startX, startY).
+     * On s’assure de ne pas dépasser les bords de l’image.
+     */
+    private GrayColor averageColor(GrayImage image, int startX, int startY, int width, int height) {
+        double sum = 0.0;
+        int count = 0;
+
+        for (int i = startX; i < Math.min(startX + newPixelSize, width); i++) {
+            for (int j = startY; j < Math.min(startY + newPixelSize, height); j++) {
+                sum += image.getPixelGrayColor(i, j).getLuminosity();
+                count++;
             }
         }
 
-        average /= Math.pow(this.newPixelSize, 2);
-
+        double average = (count == 0) ? 0.0 : sum / count; // average = sun / count sauf si count = 0, dans ce cas average = 0 (enlève erreur DivisionByZero)
         return new ByteGrayColor(average);
     }
 }
 
+