diff --git a/src/ImageSharp/Memory/ByteMemoryManager{T}.cs b/src/ImageSharp/Memory/ByteMemoryManager{T}.cs
index 924230fc8..70d1b1c30 100644
--- a/src/ImageSharp/Memory/ByteMemoryManager{T}.cs
+++ b/src/ImageSharp/Memory/ByteMemoryManager{T}.cs
@@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.Memory
///
public override MemoryHandle Pin(int elementIndex = 0)
{
- return this.memory.Pin();
+ return this.memory.Slice(elementIndex).Pin();
}
///
diff --git a/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs b/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs
index c0cd3f56a..06ee069c6 100644
--- a/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs
+++ b/tests/ImageSharp.Tests/Image/ImageTests.WrapMemory.cs
@@ -99,25 +99,13 @@ namespace SixLabors.ImageSharp.Tests
///
public override Span GetSpan()
{
- if (MemoryMarshal.TryGetArray(this.memory, out ArraySegment arraySegment))
- {
- return MemoryMarshal.Cast(arraySegment.AsSpan());
- }
-
- if (MemoryMarshal.TryGetMemoryManager>(this.memory, out MemoryManager memoryManager))
- {
- return MemoryMarshal.Cast(memoryManager.GetSpan());
- }
-
- ThrowHelper.ThrowArgumentException("The input Memory instance was not valid.", nameof(this.memory));
-
- return default;
+ return MemoryMarshal.Cast(this.memory.Span);
}
///
public override MemoryHandle Pin(int elementIndex = 0)
{
- return this.memory.Pin();
+ return this.memory.Slice(elementIndex).Pin();
}
///