diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/azgracompress/compression/ImageCompressor.java
index 6951e220bad59e16eb0d28fd203c13d3ec1db0b1..6ca9c14b8089e9851497be8879507daaab0c37aa 100644
--- a/src/main/java/azgracompress/compression/ImageCompressor.java
+++ b/src/main/java/azgracompress/compression/ImageCompressor.java
@@ -1,10 +1,12 @@
 package azgracompress.compression;
 
+import azgracompress.U16;
 import azgracompress.cache.ICacheFile;
 import azgracompress.compression.exception.ImageCompressionException;
 import azgracompress.data.Range;
 import azgracompress.fileformat.QCMPFileHeader;
 import azgracompress.io.InputData;
+import azgracompress.utilities.Utils;
 
 import java.io.*;
 import java.util.Arrays;
@@ -90,12 +92,11 @@ public class ImageCompressor extends CompressorDecompressorBase {
         try (DataOutputStream compressStream = new DataOutputStream(new BufferedOutputStream(outputStream, 8192))) {
             final long[] chunkSizes = imageCompressor.compressStreamMode(compressStream);
             for (final long chunkSize : chunkSizes) {
-                assert (chunkSize < Integer.MAX_VALUE);
-                compressStream.writeInt((int) chunkSize);
-                compressStream.writeInt((int) chunkSize);
+                assert (chunkSize < U16.Max);
+                compressStream.writeShort((int) chunkSize);
             }
 
-            return (int) Arrays.stream(chunkSizes).sum() + (3 * 2) + (chunkSizes.length * 4);
+            return (4 * 2) + ((int) Arrays.stream(chunkSizes).sum()) + (chunkSizes.length * 2);
         } catch (ImageCompressionException ice) {
             System.err.println(ice.getMessage());
             return -1;