diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin
index faa431d3e9bc95eafc2b519d4c58569a7de89e2e..4f6382c184eabecbd335e26486b281b4cf4daf71 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 055e7813d940ddf8fae316945a96a262acd62cd1..62a6a9ee70cd6c52c2fa0a3291187888fb50fd26 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 bf01ebcc9ce53cb6db31b13b8288fb318a2c1246..51f71e9c932e0ab839e3009fc85e46e1dc2cc507 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 ff411491ef1b68e57098fa482ba2c4941e415050..202e6a3ec2fc70ea7aa5e103dde72d55685e1238 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 ff70ef0e11a83d02d3ba42aaa702694f76f78f3a..d8cea3c56d8fd758d5b408f209f4e99393965978 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 3e94c0722d63d3529f8844cb5473248eb4c0db73..db8fe93b84f4de9132047ab34768545b54d91dec 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 92abf3e3b288ae24db14f2c5a942864877557654..12cf30d77a1bed11bbe6cabfd5b4ffa1aeb486b6 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/build/classes/java/main/Display.class b/build/classes/java/main/Display.class
index f9ba28422a1eaee46c98e8c0390342dfa147e21f..a76ef314521ee9fbfc354abfba4f2fbdcd0cb270 100644
Binary files a/build/classes/java/main/Display.class and b/build/classes/java/main/Display.class differ
diff --git a/build/classes/java/main/Pixelate.class b/build/classes/java/main/Pixelate.class
new file mode 100644
index 0000000000000000000000000000000000000000..729b874dccdc98ae4e426dd1f85f1616d6b58c6f
Binary files /dev/null and b/build/classes/java/main/Pixelate.class differ
diff --git a/build/classes/java/test/PixelateTest.class b/build/classes/java/test/PixelateTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..1ba626cbc1f133e170b7c6c9339c987c008c0c3c
Binary files /dev/null and b/build/classes/java/test/PixelateTest.class differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0
index f9ba28422a1eaee46c98e8c0390342dfa147e21f..a76ef314521ee9fbfc354abfba4f2fbdcd0cb270 100644
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1
deleted file mode 100644
index 568cb260dfee6c163cada1fb364401b62c1f4413..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Outline.class.uniqueId1 and /dev/null differ
diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1
new file mode 100644
index 0000000000000000000000000000000000000000..656924cc69183fd4d1c9f81a7bfd80f59a0b065c
Binary files /dev/null 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 05ed6ce2a2fb7bdbd4f27496fc2cf80c5ea2fe6a..64db03ff04a968e653af2394d4508cf16be25b92 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0
deleted file mode 100644
index 9187d8e0714b979389374fe033a806665a74db76..0000000000000000000000000000000000000000
Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 and /dev/null differ
diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/PixelateTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/PixelateTest.class.uniqueId0
new file mode 100644
index 0000000000000000000000000000000000000000..ecefa7587d7990469dc03a4e8fda0eba2fd10f3b
Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/PixelateTest.class.uniqueId0 differ
diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin
index 22f4d54e8cc10e1eb8d63f66c62ca6b046b88ca4..983031c7cda2ae98206bf88258456cf462ccf183 100644
Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ
diff --git a/src/main/java/Display.java b/src/main/java/Display.java
index 030bcc504b676496032b08965a837d076544a087..c1c327603efedcff5d14d8480835b9ce3d53ec04 100644
--- a/src/main/java/Display.java
+++ b/src/main/java/Display.java
@@ -21,7 +21,7 @@ public class Display implements Initializable {
 
         this.image = MatrixGrayImage.createImageFromPGMFile("images/luminy.pgm");
 
-        transform transformation = new Outline(0.025);
+        transform transformation = new Pixelate(10);
 
         transformation.applyTo(this.image);
 
diff --git a/src/main/java/Pixelate.java b/src/main/java/Pixelate.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c22ae5aaa07abf4c000ecac79b822ef51b1583f
--- /dev/null
+++ b/src/main/java/Pixelate.java
@@ -0,0 +1,40 @@
+import java.util.ArrayList;
+import java.util.List;
+
+public class Pixelate implements transform {
+    private int newPixelSize;
+
+    public Pixelate(int newPixelSize) {
+        this.newPixelSize = newPixelSize;
+    }
+
+    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);
+
+            }   
+        }
+    }
+
+    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();
+            }
+        }
+
+        average /= Math.pow(this.newPixelSize, 2);
+
+        return new ByteGrayColor(average);
+    }
+}
+
diff --git a/src/test/java/PixelateTest.java b/src/test/java/PixelateTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc664f2978447503dd133476408f9d5e8fa20ca1
--- /dev/null
+++ b/src/test/java/PixelateTest.java
@@ -0,0 +1,27 @@
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.*;
+
+public class PixelateTest {
+
+    @Test
+    public void testAverage(){
+        GrayImage image = new MatrixGrayImage(2, 2);
+
+        GrayColor color1 = new ByteGrayColor(1.);
+        GrayColor color2 = new ByteGrayColor(1.);
+        GrayColor color3 = new ByteGrayColor(0.);
+        GrayColor color4 = new ByteGrayColor(0.);
+
+        image.setPixel(color1, 0, 0);
+        image.setPixel(color2, 1, 0);
+        image.setPixel(color3, 0, 1);
+        image.setPixel(color4, 1, 1);
+
+        Pixelate pixelate = new Pixelate(2);
+
+        assertThat(pixelate.averageColor(image, 0, 0).getLuminosity()).isEqualTo(new ByteGrayColor(0.5).getLuminosity());
+        
+    }
+}