diff --git a/src/cal_tools/agipdlib.py b/src/cal_tools/agipdlib.py
index cb7d83a20b8702e4d280f6392301009070b72497..852be04406e946b26b7af9ad6396e8c81ae1ddb3 100644
--- a/src/cal_tools/agipdlib.py
+++ b/src/cal_tools/agipdlib.py
@@ -29,7 +29,6 @@ from cal_tools.h5_copy_except import h5_copy_except_paths
 from cal_tools.tools import get_from_db
 
 
-
 class AgipdCtrl:
     def __init__(
         self,
@@ -262,7 +261,6 @@ class AgipdCtrl:
                 raise ValueError(error)
             return default_voltage
 
-
     def get_integration_time(self) -> int:
         """Read integration time from the FPGA device.
 
@@ -997,27 +995,62 @@ class AgipdCorrections:
         if np.all(can_calibrate):
             return n_img
 
+        # Get selected number of images based on
+        # selected pulses to correct
+        n_img_sel = np.count_nonzero(can_calibrate)
+
         # Only select data corresponding to selected pulses
         # and overwrite data in shared-memory leaving
         # the required indices to correct
-        data = data_dict['data'][:n_img][can_calibrate]
-        rawgain = data_dict['rawgain'][:n_img][can_calibrate]
-        cellId = data_dict['cellId'][:n_img][can_calibrate]
-        pulseId = data_dict['pulseId'][:n_img][can_calibrate]
-        trainId = data_dict['trainId'][:n_img][can_calibrate]
+        # - data
+        arr = data_dict['data'][:n_img][can_calibrate]
+        data_dict['data'][:n_img_sel] = arr
+        # - rawgain`
+        arr = data_dict['rawgain'][:n_img][can_calibrate]
+        data_dict['rawgain'][:n_img_sel] = arr
+        # - cellId
+        arr = data_dict['cellId'][:n_img][can_calibrate]
+        data_dict['cellId'][:n_img_sel] = arr
+        # - pulseId
+        arr = data_dict['pulseId'][:n_img][can_calibrate]
+        data_dict['pulseId'][:n_img_sel] = arr
+        # - trainId
+        arr = data_dict['trainId'][:n_img][can_calibrate]
+        data_dict['trainId'][:n_img_sel] = arr
+
+        # arrays generated after reading and initial selection
+        # - gain
+        arr = data_dict['gain'][:n_img][can_calibrate]
+        data_dict['gain'][:n_img_sel] = arr
+
+        is_adaptive = self.gain_mode is AgipdGainMode.ADAPTIVE_GAIN
+        melt_snow = self.corr_bools.get("melt_snow")
+        if (is_adaptive and melt_snow):
+            # - t0_rgain
+            arr = data_dict['t0_rgain'][:n_img][can_calibrate]
+            data_dict['t0_rgain'][:n_img_sel] = arr
+            # - raw_gain
+            arr = data_dict['raw_data'][:n_img][can_calibrate]
+            data_dict['raw_data'][:n_img_sel] = arr
 
-        # Overwrite selected number of images based on
-        # selected pulses to correct
-        n_img = np.count_nonzero(can_calibrate)
+        # if baseline correction was not requested
+        # `msk` and `rel_corr` will still be empty shared_mem arrays
+        if any(self.blc_bools):
+            # - blShift
+            arr = data_dict['blShift'][:n_img][can_calibrate]
+            data_dict['blShift'][:n_img_sel] = arr
+            # - msk
+            arr = data_dict['msk'][:n_img][can_calibrate]
+            data_dict['msk'][:n_img_sel] = arr
+            # - rel_corr
+            if hasattr(self, "rel_gain"):
+                arr = data_dict['rel_corr'][:n_img][can_calibrate]
+                data_dict['rel_corr'][:n_img_sel] = arr
 
-        data_dict['nImg'][0] = n_img
-        data_dict['data'][: n_img] = data
-        data_dict['rawgain'][:n_img] = rawgain
-        data_dict['cellId'][:n_img] = cellId
-        data_dict['pulseId'][:n_img] = pulseId
-        data_dict['trainId'][:n_img] = trainId
+        # Overwrite number of images
+        data_dict['nImg'][0] = n_img_sel
 
-        return n_img
+        return n_img_sel
 
     def copy_and_sanitize_non_cal_data(self, infile, outfile, agipd_base,
                                        idx_base, trains):