diff --git a/Code/Common/otbImageRegionSquareTileSplitter.txx b/Code/Common/otbImageRegionSquareTileSplitter.txx
index 2055e184fedb400953aba9939089ef7380bc9692..31e5751264c7e31e4b42b9d42d0173d1ce1bb29f 100644
--- a/Code/Common/otbImageRegionSquareTileSplitter.txx
+++ b/Code/Common/otbImageRegionSquareTileSplitter.txx
@@ -99,9 +99,17 @@ ImageRegionSquareTileSplitter<VImageDimension>
 
   if(tilesPerMegaTilesPerDim == 0)
     {
-    tilesPerMegaTilesPerDim =1;
+    tilesPerMegaTilesPerDim = 1;
     }
 
+  // Can't use more tiles than the number of splits per dim
+  if (tilesPerMegaTilesPerDim > m_SplitsPerDimension[0])
+    tilesPerMegaTilesPerDim = m_SplitsPerDimension[0];
+
+  if (tilesPerMegaTilesPerDim > m_SplitsPerDimension[1])
+    tilesPerMegaTilesPerDim = m_SplitsPerDimension[1];
+
+
   unsigned int tilesPerMegaTiles = tilesPerMegaTilesPerDim*tilesPerMegaTilesPerDim;
 
   unsigned int remaining = i / tilesPerMegaTiles;