diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c
index ffd92d1a6ea442253f06f37259d28555cc670e3b..2d3954d29aecf7599a7d842cd2c571000a921c47 100644
--- a/libs/vkd3d/state.c
+++ b/libs/vkd3d/state.c
@@ -835,10 +835,10 @@ static int compare_descriptor_range(const void *a, const void *b)
     const struct d3d12_root_descriptor_table_range *range_a = a, *range_b = b;
     int ret;
 
-    if ((ret = range_a->type - range_b->type))
+    if ((ret = vkd3d_u32_compare(range_a->type, range_b->type)))
         return ret;
 
-    if ((ret = range_a->offset - range_b->offset))
+    if ((ret = vkd3d_u32_compare(range_a->offset, range_b->offset)))
         return ret;
 
     return (range_a->descriptor_count == UINT_MAX) - (range_b->descriptor_count == UINT_MAX);