diff --git a/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.txx b/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.txx
index 8b3126aa4a90eda0bc73ce1503fc9dc26b855863..37355308e66c19c463d37699a83b9c29c719b5a1 100644
--- a/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.txx
+++ b/Modules/Filtering/Convolution/include/otbOverlapSaveConvolutionImageFilter.txx
@@ -186,6 +186,9 @@ OverlapSaveConvolutionImageFilter<TInputImage, TOutputImage, TBoundaryCondition>
   unsigned int leftskip = static_cast<unsigned int>(std::max(0L, inputIndex[0] - pieceIndex[0]));
   unsigned int topskip =  pieceSize[0] * static_cast<unsigned int>(std::max(0L, inputIndex[1] - pieceIndex[1]));
 
+  // zero filling
+  memset(inputPiece,0,pieceNbOfPixel * sizeof(InputPixelType));
+
   // Filling the buffer with image values
   for (l = 0; l < inputSize[1]; ++l)
     {
@@ -205,6 +208,9 @@ OverlapSaveConvolutionImageFilter<TInputImage, TOutputImage, TBoundaryCondition>
                                                                       filterPieceFFT,
                                                                       FFTW_MEASURE);
 
+  // zero filling
+  memset(resampledFilterPiece,0,pieceNbOfPixel * sizeof(InputPixelType));
+
   k = 0;
   // Filling the buffer with filter values
   for (j = 0; j < sizeOfFilter[1]; ++j)