diff --git a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java b/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java
index 6ccf86eabe1bfb1321be9bda8af44b48e30f4cde..283947c9a73d588459f3e89b74f9bd51ba6359ca 100644
--- a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java
+++ b/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java
@@ -21,15 +21,17 @@ public class LBGVectorQuantizer {
     private double _mse = 0.0;
 
     public LBGVectorQuantizer(final int[][] vectors, final int codebookSize, final int workerCount) {
-
         assert (vectors.length > 0) : "No training vectors provided";
 
+        this.vectorSize = vectors[0].length;
+        final int[][] vectorsCopy = new int[vectors.length][vectorSize];
+        System.arraycopy(vectors, 0, vectorsCopy, 0, vectors.length);
+
         this.trainingVectors = new TrainingVector[vectors.length];
-        for (int i = 0; i < vectors.length; i++) {
-            trainingVectors[i] = new TrainingVector(Arrays.copyOf(vectors[i], vectors[i].length));
+        for (int i = 0; i < vectorsCopy.length; i++) {
+            trainingVectors[i] = new TrainingVector(vectorsCopy[i]);
         }
 
-        this.vectorSize = vectors[0].length;
         this.codebookSize = codebookSize;
         this.workerCount = workerCount;
     }