diff --git a/src/toolbox_scs/detectors/hrixs.py b/src/toolbox_scs/detectors/hrixs.py
index 88aaeeca58c5cfaac81d07cdb85d37047f618774..28d3d88fd049fb6034194a55c2d26f08c551d5c4 100644
--- a/src/toolbox_scs/detectors/hrixs.py
+++ b/src/toolbox_scs/detectors/hrixs.py
@@ -295,7 +295,13 @@ class hRIXS:
     BINS = abs(np.subtract(*RANGE)) * FACTOR
 
     METHOD = 'centroid'  # ['centroid', 'integral']
+    
+    # Dark image and mask treatment
     USE_DARK = False
+    USE_DARK_MASK = False
+    DARK_MASK_THRESHOLD = 100
+    MASK_AVG_X = np.s_[1850:2000]
+    MASK_AVG_Y = np.s_[500:1500]
 
     ENERGY_INTERCEPT = 0
     ENERGY_SLOPE = 1
@@ -322,7 +328,10 @@ class hRIXS:
 
         return data
 
-    def load_dark(self, runNB, proposal=None):
+    def load_dark(self, runNB, proposal=None, use_dark=True, mask=True,
+                  mask_threshold=None):
+        if mask_threshold == None:
+            mask_threshold = self.DARK_MASK_THRESHOLD
         try:
             # Checks to see if runNB can be iterated over (is list-like)
             data_list = []
@@ -334,7 +343,15 @@ class hRIXS:
             data = self.from_run(runNB, proposal)
         self.dark_image = data['hRIXS_det'].mean(dim='trainId')
         self.dark_im_array = self.dark_image.to_numpy()
-        self.USE_DARK = True
+        if use_dark:
+            self.USE_DARK = True
+        if mask:
+            dark_avg = np.mean(self.dark_im_array[self.MASK_AVG_Y,
+                                                              self.MASK_AVG_X], (0, 1))
+            self.dark_mask = np.abs(self.dark_im_array - dark_avg) > mask_threshold
+            self.dark_im_array_m = np.array(self.dark_im_array)
+            self.dark_im_array_m[self.dark_mask] = dark_avg
+            self.USE_DARK_MASK = True
 
     def find_curvature(self, runNB, proposal=None, plot=True, args=None, **kwargs):
         data = self.from_run(runNB, proposal)
@@ -354,12 +371,18 @@ class hRIXS:
             bins = self.BINS
         hit_x = []
         hit_y = []
+        hits = []
         ret = np.zeros((len(data["hRIXS_det"]), bins))
         for image, r in zip(data["hRIXS_det"], ret):
-            if self.USE_DARK:
-                use_image = image.to_numpy() - self.dark_im_array
+            use_image = image.to_numpy()
+            if self.USE_DARK_MASK:
+                use_image[self.dark_mask] = np.mean(use_image[self.MASK_AVG_Y,
+                                                              self.MASK_AVG_X], (0, 1))
+                if self.USE_DARK:
+                    use_image = use_image - self.dark_im_array_m
             else:
-                use_image = image.to_numpy()
+                if self.USE_DARK:
+                    use_image = use_image - self.dark_im_array
             c = centroid(
                 use_image[self.X_RANGE, self.Y_RANGE].T,
                 threshold=self.THRESHOLD,
@@ -371,8 +394,9 @@ class hRIXS:
             rc = np.array(c)
             
             if return_hits:
-                hit_x.append(rc[:,0])
-                hit_y.append(rc[:,1])
+                hit_x.append(rc[:, 0])
+                hit_y.append(rc[:, 1])
+                hits.append(rc)
 
             hy, hx = np.histogram(
                 rc[:, 0], bins=bins,
@@ -383,7 +407,9 @@ class hRIXS:
             energy=np.linspace(self.Y_RANGE.start, self.Y_RANGE.stop, bins)
             * self.ENERGY_SLOPE + self.ENERGY_INTERCEPT)
         if return_hits:
-            return data.assign(xhits=(("trainId"), hit_x), yhits=(("trainId"), hit_y))
+            return data.assign(hits=(("trainId"), hits),
+                               xhits=(("trainId"), hit_x),
+                               yhits=(("trainId"), hit_y))
         else:
             return data.assign(spectrum=(("trainId", "energy"), ret))