diff --git a/Code/DisparityMap/otbNNearestPointsLinearInterpolateDeformationFieldGenerator.txx b/Code/DisparityMap/otbNNearestPointsLinearInterpolateDeformationFieldGenerator.txx
index 7c07470625f36282b030f75ed7d52809b10564f1..bfc25090fd295aba6a80ee90314282191c5831ff 100644
--- a/Code/DisparityMap/otbNNearestPointsLinearInterpolateDeformationFieldGenerator.txx
+++ b/Code/DisparityMap/otbNNearestPointsLinearInterpolateDeformationFieldGenerator.txx
@@ -68,8 +68,8 @@ NNearestPointsLinearInterpolateDeformationFieldGenerator<TPointSet, TDeformation
 
       if(normalization>0)
 	{
- 	  pixel[0] = static_cast<ValueType>(xdeformation/normalization);
- 	  pixel[1] = static_cast<ValueType>(ydeformation/normalization);
+ 	  pixel[0] = static_cast<ValueType>(-xdeformation/normalization);
+ 	  pixel[1] = static_cast<ValueType>(-ydeformation/normalization);
  	}
        else
  	{
diff --git a/Code/DisparityMap/otbNNearestTransformsLinearInterpolateDeformationFieldGenerator.txx b/Code/DisparityMap/otbNNearestTransformsLinearInterpolateDeformationFieldGenerator.txx
index 564231c762a5d61b1337a7b6472ec93e876cc829..557454c34b55b8a799df5f7efc0813de72acbd79 100644
--- a/Code/DisparityMap/otbNNearestTransformsLinearInterpolateDeformationFieldGenerator.txx
+++ b/Code/DisparityMap/otbNNearestTransformsLinearInterpolateDeformationFieldGenerator.txx
@@ -72,8 +72,8 @@ NNearestTransformsLinearInterpolateDeformationFieldGenerator<TPointSet, TDeforma
 	  
 	  outputPtr->TransformIndexToPhysicalPoint(it.GetIndex(),sourcePoint);
 	  targetPoint = this->GetTransform()->TransformPoint(sourcePoint);
-	  xdeformation += (targetPoint[0]-sourcePoint[0])/distance;
-	  ydeformation += (targetPoint[1]-sourcePoint[1]) /distance;
+	  xdeformation += (sourcePoint[0]-targetPoint[0])/distance;
+	  ydeformation += (sourcePoint[1]-targetPoint[1]) /distance;
 	  normalization+=1/distance;	      
 	}
 
diff --git a/Code/DisparityMap/otbNearestPointDeformationFieldGenerator.txx b/Code/DisparityMap/otbNearestPointDeformationFieldGenerator.txx
index c0e865f9b1c33c8d45f8b0a4bd4b1be91700bdcf..7789d4c34dc3d7f91124f416288b389aa51fa35f 100644
--- a/Code/DisparityMap/otbNearestPointDeformationFieldGenerator.txx
+++ b/Code/DisparityMap/otbNearestPointDeformationFieldGenerator.txx
@@ -45,8 +45,8 @@ NearestPointDeformationFieldGenerator<TPointSet, TDeformationField>
        PixelType p(2);
        if(indexVector.size()>=1)
  	{
- 	  p[0] = static_cast<ValueType>(this->GetPointSet()->GetPointData()->GetElement(indexVector[0])[1]);
- 	  p[1] = static_cast<ValueType>(this->GetPointSet()->GetPointData()->GetElement(indexVector[0])[2]);
+ 	  p[0] = -static_cast<ValueType>(this->GetPointSet()->GetPointData()->GetElement(indexVector[0])[1]);
+ 	  p[1] = -static_cast<ValueType>(this->GetPointSet()->GetPointData()->GetElement(indexVector[0])[2]);
  	}
        else
  	{
diff --git a/Code/DisparityMap/otbNearestTransformDeformationFieldGenerator.txx b/Code/DisparityMap/otbNearestTransformDeformationFieldGenerator.txx
index d48353e75c7836f712521daf7a4dca826e305691..06ec270784dc2fca782061718ced79579653c8e0 100644
--- a/Code/DisparityMap/otbNearestTransformDeformationFieldGenerator.txx
+++ b/Code/DisparityMap/otbNearestTransformDeformationFieldGenerator.txx
@@ -55,8 +55,8 @@ NearestTransformDeformationFieldGenerator<TPointSet, TDeformationField>
 	  
 	  outputPtr->TransformIndexToPhysicalPoint(it.GetIndex(),sourcePoint);
 	  targetPoint = this->GetTransform()->TransformPoint(sourcePoint);
- 	  pixel[0] = static_cast<ValueType>(targetPoint[0]-sourcePoint[0]);
- 	  pixel[1] = static_cast<ValueType>(targetPoint[1]-sourcePoint[1]);
+ 	  pixel[0] = static_cast<ValueType>(sourcePoint[0]-targetPoint[0]);
+ 	  pixel[1] = static_cast<ValueType>(sourcePoint[1]-targetPoint[1]);
  	}
        else
  	{