diff --git a/sysdeps/freebsd/mem.c b/sysdeps/freebsd/mem.c
index a9e9d25..277ab8e 100644
--- a/sysdeps/freebsd/mem.c
+++ b/sysdeps/freebsd/mem.c
@@ -84,7 +84,7 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
        memactive = mem_get_by_pages (server, "vm.stats.vm.v_active_count");
        meminactive = mem_get_by_pages (server, "vm.stats.vm.v_inactive_count");
        memwired = mem_get_by_pages (server, "vm.stats.vm.v_wire_count");
-       memcached = mem_get_by_pages (server, "vm.stats.vm.v_cache_count");
+       memcached = mem_get_by_pages (server, "vm.stats.vm.v_cache_count") + mem_get_by_bytes (server, "kstat.zfs.misc.arcstats.size");
        membuffer = mem_get_by_bytes (server, "vfs.bufspace");
        memfree = mem_get_by_pages (server, "vm.stats.vm.v_free_count");

@@ -96,6 +96,6 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
        buf->cached = memcached;
        buf->locked = 0;

-       buf->user = memactive + memwired;
+       buf->user = buf->used - (buf->buffer + buf->cached);
        buf->flags = _glibtop_sysdeps_mem;
 }
