diff --git a/src/ImageSharp/Memory/ArrayPoolMemoryManager.cs b/src/ImageSharp/Memory/ArrayPoolMemoryManager.cs
index 86f3f0015..80c6e00e3 100644
--- a/src/ImageSharp/Memory/ArrayPoolMemoryManager.cs
+++ b/src/ImageSharp/Memory/ArrayPoolMemoryManager.cs
@@ -30,16 +30,18 @@ namespace SixLabors.ImageSharp.Memory
}
///
- internal override Buffer Allocate(int size, bool clear = false)
+ internal override Buffer Allocate(int itemCount, bool clear = false)
{
- int itemSize = Unsafe.SizeOf();
- if (this.minSizeBytes > 0 && itemSize < this.minSizeBytes * itemSize)
+ int itemSizeBytes = Unsafe.SizeOf();
+ int bufferSizeInBytes = itemCount * itemSizeBytes;
+
+ if (this.minSizeBytes > 0 && bufferSizeInBytes < this.minSizeBytes)
{
- return new Buffer(new T[itemSize], itemSize);
+ return new Buffer(new T[itemCount], itemCount);
}
- byte[] byteBuffer = this.pool.Rent(itemSize * itemSize);
- var buffer = new Buffer(Unsafe.As(byteBuffer), itemSize, this);
+ byte[] byteBuffer = this.pool.Rent(bufferSizeInBytes);
+ var buffer = new Buffer(Unsafe.As(byteBuffer), itemCount, this);
if (clear)
{
buffer.Clear();