diff --git a/Code/Projections/otbGenericRSResampleImageFilter.h b/Code/Projections/otbGenericRSResampleImageFilter.h
index 1fe69f22c53d1e4c76bb1e1aeb2da82253e93df6..cbe76bfdb0acddf42f59317ffaf8ed2739715e2e 100644
--- a/Code/Projections/otbGenericRSResampleImageFilter.h
+++ b/Code/Projections/otbGenericRSResampleImageFilter.h
@@ -81,8 +81,12 @@ public:
   typedef typename ResamplerType::InterpolatorType         InterpolatorType;
 
   /** Estimate the rpc model */
-  typedef PhysicalToRPCSensorModelImageFilter<InputImageType>   RpcModelEstimatorType;
-  typedef typename RpcModelEstimatorType::Pointer               RpcModelEstimatorPointerType;
+  typedef PhysicalToRPCSensorModelImageFilter<InputImageType>  InputRpcModelEstimatorType;
+  typedef typename InputRpcModelEstimatorType::Pointer         InputRpcModelEstimatorPointerType;
+  
+  typedef PhysicalToRPCSensorModelImageFilter<OutputImageType>  OutputRpcModelEstimatorType;
+  typedef typename OutputRpcModelEstimatorType::Pointer         OutputRpcModelEstimatorPointerType;
+  
   
   /** Specialisation of OptResampleFilter with a remote 
     * sensing  transform 
@@ -185,7 +189,7 @@ public:
     this->Modified();
   }
   
-  const ImageKeywordlist& GetOutputKeywordList()
+  const ImageKeywordlist GetOutputKeywordList()
   {
     return m_Transform->GetInputKeywordList();
   }
@@ -282,15 +286,15 @@ private:
   void EstimateInputRpcModel();
   
   // boolean that allow the estimation of the input rpc model
-  bool                              m_EstimateInputRpcModel;
-  bool                              m_EstimateOutputRpcModel;
-  bool                              m_RpcEstimationUpdated;
+  bool                               m_EstimateInputRpcModel;
+  bool                               m_EstimateOutputRpcModel;
+  bool                               m_RpcEstimationUpdated;
   
   // Filters pointers
-  ResamplerPointerType              m_Resampler;
-  RpcModelEstimatorPointerType      m_InputRpcEstimator;
-  RpcModelEstimatorPointerType      m_OutputRpcEstimator;
-  GenericRSTransformPointerType     m_Transform;
+  ResamplerPointerType               m_Resampler;
+  InputRpcModelEstimatorPointerType  m_InputRpcEstimator;
+  OutputRpcModelEstimatorPointerType m_OutputRpcEstimator;
+  GenericRSTransformPointerType      m_Transform;
 };
 
 } // namespace otb
diff --git a/Code/Projections/otbGenericRSResampleImageFilter.txx b/Code/Projections/otbGenericRSResampleImageFilter.txx
index 77d4f1f773fb01106fa990a3d6cf57c1d17a963a..70620a8e494f558f3ba3be65be77239f47d84840 100644
--- a/Code/Projections/otbGenericRSResampleImageFilter.txx
+++ b/Code/Projections/otbGenericRSResampleImageFilter.txx
@@ -38,8 +38,8 @@ GenericRSResampleImageFilter<TInputImage, TOutputImage>
 
   // internal filters instanciation
   m_Resampler         = ResamplerType::New();
-  m_InputRpcEstimator = RpcModelEstimatorType::New();
-  m_OutputRpcEstimator= RpcModelEstimatorType::New();
+  m_InputRpcEstimator = InputRpcModelEstimatorType::New();
+  m_OutputRpcEstimator= OutputRpcModelEstimatorType::New();
   m_Transform         = GenericRSTransformType::New();
 }