diff --git a/app/Services/FilteringService.cpp b/app/Services/FilteringService.cpp
index 61fbb3b1d2e3714a5de0c31c40940c8cf58e3597..9bf01eca510fba75779293f6cbdf41970d9d66fa 100644
--- a/app/Services/FilteringService.cpp
+++ b/app/Services/FilteringService.cpp
@@ -25,6 +25,7 @@
 #include <Converter.h>
 #include <Widgets/ImageWidgets/DoubleImageWindow.h>
 #include <QApplication>
+#include <Operation.h>
 
 using namespace filtrme;
 using namespace genericinterface;
@@ -67,6 +68,8 @@ void FilteringService::applyFiltering()
             return;
         }
         _dblResult = _filterChoice->doubleResult();
+        _scaling = _filterChoice->scalingResult();
+        _offset = _filterChoice->offsetResult();
 
         Filtering* filtering = _filterChoice->getFiltering();
         this->applyAlgorithm(filtering);
@@ -95,11 +98,13 @@ void FilteringService::applyAlgorithm(Filtering* algo)
            DoubleImageWindow* diw = dynamic_cast<DoubleImageWindow*>(_siw);
            image = diw->getImage();
         }
+        
         Image_t<double>* dblResImg = (*algo)(image);
         ImageWindow* riw;
         if(_siw->isStandard()) {
             delete image;
         }
+        
         if(_dblResult) {
             DoubleImageWindow* diw = dynamic_cast<DoubleImageWindow*>(_siw);
             if(diw != NULL) {
@@ -110,11 +115,27 @@ void FilteringService::applyAlgorithm(Filtering* algo)
             }
         }
         else {
+            std::string outputMessage = "";
+            Image* resImg;
             Image_t<int>* intResImg = Converter<Image_t<int> >::convert(*dblResImg);
+            if(_scaling && _offset ){
+
+                resImg  =  Converter<Image>::ConvertScaleAndOffset(*intResImg, &outputMessage);
+            }
+            else if(_scaling){
+                resImg  =  Converter<Image>::ConvertAndScale(*intResImg, &outputMessage);
+            }
+            else if(_offset){
+                resImg = Converter<Image>::ConvertAndOffset(*intResImg, &outputMessage);
+            }
+            else{
+                resImg = Converter<Image>::convertAndRound(*dblResImg);
+                outputMessage = "Pas de conversion [min : 0, max : 255]";
+
+            }
             delete dblResImg;
-            Image* resImg = Converter<Image>::makeDisplayable(*intResImg);
-            delete intResImg;
             riw = new StandardImageWindow(resImg, _siw->getPath());
+            std::cout << outputMessage << std::endl;
         }
         riw->setWindowTitle(_siw->windowTitle() + " - " + _filterChoice->getFilterName());
         emit newImageWindowCreated(_ws->getNodeId(_siw), riw);
diff --git a/app/Services/FilteringService.h b/app/Services/FilteringService.h
index 8b18b574fe76d74f7781dfbc1b93ea8905c08933..6ce6035cb600c07df70d5fe1b9ac63efb5198c64 100644
--- a/app/Services/FilteringService.h
+++ b/app/Services/FilteringService.h
@@ -66,6 +66,8 @@ namespace filtrme
 
     genericinterface::ImageWindow* _siw;
     bool _dblResult;
+    bool _scaling;
+    bool _offset;
   };
 }