diff --git a/lib/vendor/Maxim/MAX86150/max86150.c b/lib/vendor/Maxim/MAX86150/max86150.c
index 203df693a4f8cbbbc06d992afee7803ec0693197..7af45af57c47717d70b404be86554d290b2425f7 100644
--- a/lib/vendor/Maxim/MAX86150/max86150.c
+++ b/lib/vendor/Maxim/MAX86150/max86150.c
@@ -667,8 +667,9 @@ uint8_t max86150_get_sample(uint32_t *red, uint32_t *ir, int32_t *ecg)
 				0
 			);
 
-			*red = (data[0] << 16) | (data[1] << 8) | (data[2]);
-			*ir  = (data[3] << 16) | (data[4] << 8) | (data[5]);
+			// According to datasheet MS bits of PPG have to be masked
+			*red = ((data[0] << 16) | (data[1] << 8) | (data[2])) & 0x7FFFF;
+			*ir  = ((data[3] << 16) | (data[4] << 8) | (data[5])) & 0x7FFFF;
 			*ecg = (data[6] << 16) | (data[7] << 8) | (data[8]);
 		}