diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h
index 3cc0d16b93966ca6f98a688e9b57230da3c8ae76..3b4370f9476f62b06a69ff318df9069fadb3b747 100644
--- a/indra/llcommon/lltrace.h
+++ b/indra/llcommon/lltrace.h
@@ -474,7 +474,7 @@ class MemTrackable
 
 	void operator delete[](void* ptr, size_t size)
 	{
-		MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator();
+		MemStatAccumulator& accumulator = sMemStat.getCurrentAccumulator();
 		accumulator.mSize.sample(accumulator.mSize.hasValue() ? accumulator.mSize.getLastValue() - (F64)size : -(F64)size);
 		accumulator.mAllocatedCount--;
 		accumulator.mDeallocatedCount++;
@@ -516,7 +516,7 @@ class MemTrackable
 	template<typename AMOUNT_T>
 	AMOUNT_T& memClaimAmount(AMOUNT_T& size)
 	{
-		MemStatAccumulator& accumulator = sMemStat.getPrimaryAccumulator();
+		MemStatAccumulator& accumulator = sMemStat.getCurrentAccumulator();
 		mMemFootprint += (size_t)size;
 		return size;
 	}
@@ -569,12 +569,12 @@ class MemTrackable
 	{
 		static void claim(mem_trackable_t& tracker, TRACKED& tracked)
 		{
-			accumulator.mChildSize.sample(accumulator.mChildSize.hasValue() ? accumulator.mChildSize.getLastValue() + (F64)MemFootprint<TRACKED>::measure(tracked) : (F64)MemFootprint<TRACKED>::measure(tracked));
+			claim_shadow_mem( (F64)MemFootprint<TRACKED>::measure(tracked));
 		}
 
 		static void disclaim(mem_trackable_t& tracker, TRACKED& tracked)
 		{
-			accumulator.mChildSize.sample(accumulator.mChildSize.hasValue() ? accumulator.mChildSize.getLastValue() - (F64)MemFootprint<TRACKED>::measure(tracked) : -(F64)MemFootprint<TRACKED>::measure(tracked));
+			disclaim_shadow_mem((F64)MemFootprint<TRACKED>::measure(tracked));
 		}
 	};
 };