diff --git a/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx b/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx
index 531c0f656a224296be12085cfdb518fa8661e14f..c3321c2bb57dcac0cd547b8d2356055cfeb7f9bc 100644
--- a/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx
+++ b/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx
@@ -264,7 +264,7 @@ private:
       {
       // fft ttransform
       bool shift = IsParameterEnabled( "mode.fft.shift");
-      typedef otb::Image< std::complex<OutputPixelType> >          OutputImageType;
+      typedef otb::Image< std::complex<OutputPixelType> > ComplexOutputImageType;
 
       if (dir == 0 )
         {
diff --git a/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h b/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h
index 1cfdd2bf16441db4e61cd059ff4722f19505f8cd..be11633e7b98a62cded643e040e26aa76abd5d4c 100644
--- a/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h
+++ b/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h
@@ -1,31 +1,28 @@
-/*=========================================================================
+/*
+ * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
  *
- *  Copyright Insight Software Consortium
+ * This file is part of Orfeo Toolbox
  *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
+ *     https://www.orfeo-toolbox.org/
  *
- *         http://www.apache.org/licenses/LICENSE-2.0.txt
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- *=========================================================================*/
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 #ifndef otbDefaultConvertPixelTraits_h
 #define otbDefaultConvertPixelTraits_h
 
 #include "itkDefaultConvertPixelTraits.h"
 
-// #include "itkOffset.h"
-// #include "itkVector.h"
-// #include "itkMatrix.h"
-// #include "itkVariableLengthVector.h"
-// #include "itkVariableSizeMatrix.h"
-
 namespace otb 
 {
 
@@ -46,139 +43,6 @@ public:
     }  
 };
 
-// We might not need this specialization if the compileur allow
-// us to declare to function with same signature in some case :
-// see "SetNthComponent"
-/*
-#define OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(type)                      \
-  template< >                                                              \
-  class DefaultConvertPixelTraits < type >                             \
-  : public itk::DefaultConvertPixelTraits < type >                         \
-  {                                                                        \
-public:                                                                    \
-  typedef itk::DefaultConvertPixelTraits < type > SuperClass;              \
-    using typename SuperClass::ComponentType;                              \
-  };
-*/
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(float)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(double)
-// Warning long double is not in itk < 4.11
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(long double)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(int)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(char)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(short)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned int)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(signed char)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned char)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned short)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(long)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned long)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(long long)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned long long)
-// OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(bool)
-
-// #undef OTB_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL
-
-//
-//  Default traits for the Offset<> pixel type
-//
-
-// template<unsigned int VDimension>
-// class DefaultConvertPixelTraits < itk::Offset< VDimension > > : 
-// public itk::DefaultConvertPixelTraits< itk::Offset< VDimension > >
-// {
-// public:
-//   typedef itk::DefaultConvertPixelTraits < itk::Offset< VDimension > > SuperClass;
-//   using typename SuperClass::ComponentType;
-
-//   using SuperClass::SetNthComponent;
-
-//   static void SetNthComponent(int , TargetType & pixel, const TargetType& v)
-//     {
-//       pixel = v;
-//     }
-// };
-
-//
-//  Default traits for the pixel types deriving from FixedArray<>
-//
-
-/*
-define OTB_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(type)                                        \
-template < typename TComponentType , unsigned VDimension >                                   \
-class DefaultConvertPixelTraits < type < TComponentType , VDimension > >                 \
-: public itk::DefaultConvertPixelTraits < type < TComponentType , VDimension > >             \
-{                                                                                            \
-public:                                                                                      \
-  typedef itk::DefaultConvertPixelTraits < type < TComponentType , VDimension > > SuperClass;\
-  typedef typename SuperClass::TargetType TargetType;                                        \
-  static void SetNthComponent(int , TargetType & pixel, const TargetType & v)                \
-    {                                                                                        \
-      pixel = v;                                                                             \
-    }                                                                                        \
-}                                                                                            \
-*/
-// OTB_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(itk::FixedArray);
-// OTB_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(itk::Vector);
-// OTB_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(itk::CovariantVector);
-// OTB_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(itk::Point);
-
-// #undef OTB_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE
-
-//
-//  Default traits for pixel types deriving from VariableLengthVector<>
-//
-
-// template < typename T >
-// class DefaultConvertPixelTraits < itk::VariableLengthVector < T > >
-// : public itk::DefaultConvertPixelTraits < itk::VariableLengthVector< T > >
-// {
-// public:
-//   typedef itk::DefaultConvertPixelTraits< itk::VariableLengthVector < T > > SuperClass;
-//   using typename SuperClass::TargetType;
-//   using typename SuperClass::ComponentType;
-// };
-
-//
-//  Default traits for the pixel types deriving from Matrix<>
-//
-
-// template<typename VComponent, unsigned VRows, unsigned VCols >
-// class DefaultConvertPixelTraits < itk::Matrix< VComponent, VRows, VCols > >
-// : public itk::DefaultConvertPixelTraits < itk::Matrix< VComponent, VRows, VCols > >
-// {
-// public:
-//   typedef itk::DefaultConvertPixelTraits < itk::Matrix< VComponent, VRows, VCols > > SuperClass;
-//   using typename SuperClass::TargetType;
-//   using typename SuperClass::ComponentType;
-
-
-//   using SuperClass::SetNthComponent;
-
-//   static void SetNthComponent(int , TargetType & pixel, const TargetType& v)
-//     {
-//       pixel = v;
-//     }
-// };
-
-//
-//  Default traits for pixel types deriving from VariableSizeMatrix<>
-//
-
-// template < typename T >
-// class DefaultConvertPixelTraits< itk::VariableSizeMatrix< T > >
-// : public itk::DefaultConvertPixelTraits< itk::VariableSizeMatrix< T > >
-// {
-//   public:
-//   typedef itk::DefaultConvertPixelTraits< itk::VariableSizeMatrix < T > > SuperClass;
-//   using typename SuperClass::TargetType;
-//   using typename SuperClass::ComponentType;
-// };
-
-//
-//  Default traits for pixel types deriving from std::complex<>
-//
-
 template < typename T >
 class DefaultConvertPixelTraits < ::std::complex < T > > 
 : public itk::DefaultConvertPixelTraits < ::std::complex < T > >
diff --git a/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.h b/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.h
index d74a2d8829e9c8142d5f4a04b895fd760f65ff66..78bf5a6a0c09792d97b673b4d2736e3537757e52 100644
--- a/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.h
+++ b/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.h
@@ -79,33 +79,23 @@ public:
   typedef typename itk::NumericTraits< OutputInternalPixelType >::ValueType OutputPixelValueType;
 
 
-  /** The values greater than or equal to the value are set to OutsideValue. */
+  /** The values greater than or equal to the value are set to \p thresh. */
   void ClampAbove(const OutputPixelValueType &thresh);
 
-  /** The values less than or equal to the value are set to OutsideValue. */
+  /** The values less than or equal to the value are set to \p thresh. */
   void ClampBelow(const OutputPixelValueType &thresh);
 
-  /** The values outside the range are set to OutsideValue. */
+  /** The values outside the range are set to \p lower or \p upper. */
   void ClampOutside(const OutputPixelValueType &lower, const OutputPixelValueType &upper);
 
   /** Set/Get methods to set the lower threshold */
-  void SetLower(OutputPixelValueType val)
-  {
-    m_Lower = val;
-    m_DLower = static_cast<double>(val);
-    this->GetFunctor().SetLowest( m_Lower );
-    this->Modified();
-  }
+  void SetLower(OutputPixelValueType val);
+
   itkGetConstMacro(Lower, OutputPixelValueType);
 
   /** Set/Get methods to set the upper threshold */
-  void SetUpper(OutputPixelValueType val)
-  {
-    m_Upper = val;
-    m_DUpper = static_cast<double>(val);
-    this->GetFunctor().SetHighest( m_Upper );
-    this->Modified();
-  }
+  void SetUpper(OutputPixelValueType val);
+
   itkGetConstMacro(Upper, OutputPixelValueType);
 
 
@@ -126,9 +116,6 @@ private:
   ClampImageFilter(const Self&) = delete ;
   void operator=(const Self&) = delete ;
 
-  double m_DLower;
-  double m_DUpper;
-
   OutputPixelValueType m_Lower;
   OutputPixelValueType m_Upper;
 };
diff --git a/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.txx b/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.txx
index 74d0c543e901cb75f61a94f0d26749803d3f5aa7..d6f146436a981ee0b59e9bb4bf5d6e485824314f 100644
--- a/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.txx
+++ b/Modules/Filtering/ImageManipulation/include/otbClampImageFilter.txx
@@ -41,11 +41,30 @@ ClampImageFilter<TInputImage, TOutputImage>
 {
   m_Lower = std::numeric_limits < OutputPixelValueType >::lowest();
   m_Upper = std::numeric_limits < OutputPixelValueType >::max();
+}
 
-  m_DLower = static_cast<double>(m_Lower);
-  m_DUpper = static_cast<double>(m_Upper);
+template <class TInputImage, class TOutputImage>
+void
+ClampImageFilter<TInputImage, TOutputImage>
+::SetLower(OutputPixelValueType val)
+{
+  if ( m_Lower != val )
+    {
+    m_Lower = val;
+    this->GetFunctor().SetLowest( m_Lower );
+    this->Modified();  
+    }
 }
 
+template <class TInputImage, class TOutputImage>
+void
+ClampImageFilter<TInputImage, TOutputImage>
+::SetUpper(OutputPixelValueType val)
+{
+  m_Upper = val;
+  this->GetFunctor().SetHighest( m_Upper );
+  this->Modified();
+}
 
 /**
  *
@@ -78,7 +97,6 @@ ClampImageFilter<TInputImage, TOutputImage>
     {
     m_Lower = std::numeric_limits < OutputPixelValueType >::lowest();
     m_Upper = thresh;
-    m_DUpper = static_cast<double>(m_Upper);
     this->GetFunctor().SetLowest( m_Lower );
     this->GetFunctor().SetHighest( m_Upper );
     this->Modified();
@@ -97,7 +115,6 @@ ClampImageFilter<TInputImage, TOutputImage>
     {
     m_Upper = std::numeric_limits < OutputPixelValueType >::max();
     m_Lower = thresh;
-    m_DLower = m_Lower;
     this->GetFunctor().SetLowest( m_Lower );
     this->GetFunctor().SetHighest( m_Upper );
     this->Modified();
@@ -123,8 +140,6 @@ ClampImageFilter<TInputImage, TOutputImage>
     {
     m_Lower = lower;
     m_Upper = upper;
-    m_DLower = m_Lower;
-    m_DUpper = m_Upper;
     this->GetFunctor().SetLowest( m_Lower );
     this->GetFunctor().SetHighest( m_Upper );
     this->Modified();
diff --git a/Modules/Filtering/ImageManipulation/include/otbConvertTypeFunctor.h b/Modules/Filtering/ImageManipulation/include/otbConvertTypeFunctor.h
index bc74ae4a995252fb9821f9f8fcbc8ca291f2de44..12fa0ed065de25fd2d8bfe8fbcaeaa614b332fee 100644
--- a/Modules/Filtering/ImageManipulation/include/otbConvertTypeFunctor.h
+++ b/Modules/Filtering/ImageManipulation/include/otbConvertTypeFunctor.h
@@ -64,13 +64,14 @@ public:
       }
     else
       m_Scal = m_CompIn;
+
     if ( m_cOutInternalPix )
       m_CompOut = ( m_Scal + 1 ) / 2 ;
+    else if ( m_sOutPix || m_cOutPix )
+      m_CompOut = 1;
     else
       m_CompOut = m_Scal ;
     
-    if ( m_sOutPix || m_cOutPix )
-      m_CompOut = 1;
 
     return m_CompOut ;
   }
@@ -164,7 +165,7 @@ protected:
     }
 
   void Clamp( std::vector < double > & vPixel ) const
-  {
+    {
     for ( double & comp : vPixel )
       {
         if ( comp >= m_HighestBD )
@@ -172,7 +173,7 @@ protected:
         else if ( comp <= m_LowestBD )
           comp = m_LowestBD;
       }
-  }
+    }
 
   template <class PixelType ,
     std::enable_if_t < std::is_arithmetic < PixelType > ::value  , int > = 0 >