diff --git a/Code/BasicFilters/otbStreamingShrinkImageFilter.txx b/Code/BasicFilters/otbStreamingShrinkImageFilter.txx
index 5cbdb14f8f05b2e0da8285b2e0ea2df3bb49a538..2c71c9fb30e64748050bbb0537344aa399c29d92 100644
--- a/Code/BasicFilters/otbStreamingShrinkImageFilter.txx
+++ b/Code/BasicFilters/otbStreamingShrinkImageFilter.txx
@@ -118,6 +118,7 @@ PersistentShrinkImageFilter<TInputImage, TOutputImage>
   inputPtr->UpdateOutputInformation();
 
   m_ShrinkedOutput = OutputImageType::New();
+  m_ShrinkedOutput->CopyInformation(inputPtr);
 
   const typename InputImageType::SpacingType&
                                            inputSpacing = inputPtr->GetSpacing();
@@ -133,11 +134,13 @@ PersistentShrinkImageFilter<TInputImage, TOutputImage>
     {
     shrinkedOutputSpacing[i] = inputSpacing[i] * static_cast<double>(m_ShrinkFactor);
     shrinkedOutputSize[i] = inputSize[i] / m_ShrinkFactor;
+
+    // TODO : don't know what to do here.
+    // dividing the input index by the shrink factor does not make a lot of sense...
     shrinkedOutputStartIndex[i] = 0;
     }
 
   m_ShrinkedOutput->SetSpacing(shrinkedOutputSpacing);
-  m_ShrinkedOutput->SetNumberOfComponentsPerPixel(inputPtr->GetNumberOfComponentsPerPixel());
 
   shrinkedOutputLargestPossibleRegion.SetSize(shrinkedOutputSize);
   shrinkedOutputLargestPossibleRegion.SetIndex(shrinkedOutputStartIndex);