diff --git a/doc/changelog.rst b/doc/changelog.rst
index 7e249afd5933b8c29969b14260030ac6c6510a56..930cba697db30a39dad749af887227248f887103 100644
--- a/doc/changelog.rst
+++ b/doc/changelog.rst
@@ -7,6 +7,7 @@ unreleased
 - **Bug fixes**
 
     - fix :issue:`61` regarding sign of XAS in some cases :mr:`207`
+    - Use xarray.values instead of .to_numpy() for backward-compatibility :mr:`214`
 
 - **Improvements**
 
diff --git a/src/toolbox_scs/detectors/hrixs.py b/src/toolbox_scs/detectors/hrixs.py
index 6282d85f15c4bd1d9721fc1e1793a48d12a3f825..82966529dfeeef6af260ceba40692890667ce512 100644
--- a/src/toolbox_scs/detectors/hrixs.py
+++ b/src/toolbox_scs/detectors/hrixs.py
@@ -331,7 +331,7 @@ class hRIXS:
         data = self.from_run(runNB, proposal)
 
         image = data['hRIXS_det'].sum(dim='trainId') \
-                .to_numpy()[self.X_RANGE, self.Y_RANGE].T
+                .values[self.X_RANGE, self.Y_RANGE].T
         if args is None:
             spec = (image - image[:10, :].mean()).mean(axis=1)
             mean = np.average(np.arange(len(spec)), weights=spec)
@@ -347,7 +347,7 @@ class hRIXS:
         ret = np.zeros((len(data["hRIXS_det"]), bins))
         for image, r in zip(data["hRIXS_det"], ret):
             c = centroid(
-                image.to_numpy()[self.X_RANGE, self.Y_RANGE].T,
+                image.values[self.X_RANGE, self.Y_RANGE].T,
                 threshold=self.THRESHOLD,
                 std_threshold=self.STD_THRESHOLD,
                 curvature=(self.CURVE_A, self.CURVE_B))
@@ -370,7 +370,7 @@ class hRIXS:
         for image, r in zip(data["hRIXS_det"], ret):
             if self.USE_DARK:
                 image = image - self.dark_image
-            r[:] = integrate(image.to_numpy()[self.X_RANGE, self.Y_RANGE].T, factor=1,
+            r[:] = integrate(image.values[self.X_RANGE, self.Y_RANGE].T, factor=1,
                              range=(10, bins - 10),
                              curvature=(self.CURVE_A, self.CURVE_B))
         data = data.assign_coords(
diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py
index 3ba0b73d9fe99d8211b5fe7c4973309fa42e5bd1..25ac0a2e9d524ec78d9ae959811ffc062f83e691 100644
--- a/src/toolbox_scs/routines/boz.py
+++ b/src/toolbox_scs/routines/boz.py
@@ -1569,7 +1569,7 @@ def load_dssc_module(proposalNB, runNB, moduleNB=15,
     ppt = run[source, key][subset].data_counts()
     # ignore train with no pulses, can happen in burst mode acquisition
     ppt = ppt[ppt > 0]
-    tid = ppt.index.to_numpy()
+    tid = ppt.index.values
 
     ppt = np.unique(ppt)
     assert ppt.shape[0] == 1, "number of pulses changed during the run"