diff --git a/Modules/Filtering/DimensionalityReduction/include/otbPCAImageFilter.txx b/Modules/Filtering/DimensionalityReduction/include/otbPCAImageFilter.txx
index 4ec65fd304c39753141f392068e6eab750cc000c..69d298cd1236a192455963754db86a79d4aaacf9 100644
--- a/Modules/Filtering/DimensionalityReduction/include/otbPCAImageFilter.txx
+++ b/Modules/Filtering/DimensionalityReduction/include/otbPCAImageFilter.txx
@@ -312,10 +312,20 @@ template < class TInputImage, class TOutputImage,
 void
 PCAImageFilter< TInputImage, TOutputImage, TDirectionOfTransformation >
 ::ReverseGenerateData ()
-{    
-    m_Normalizer->GraftOutput( this->GetOutput() );
+{
+
+  if ( m_GivenStdDevValues || m_GivenMeanValues )
+    {
+    m_Normalizer->GraftOutput(this->GetOutput());
     m_Normalizer->Update();
-    this->GraftOutput( m_Normalizer->GetOutput() );
+    this->GraftOutput(m_Normalizer->GetOutput());
+    }
+  else
+    {
+    m_Transformer->GraftOutput( this->GetOutput() );
+    m_Transformer->Update();
+    this->GraftOutput( m_Transformer->GetOutput() );
+    }
 }
 
 template < class TInputImage, class TOutputImage,