diff --git a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
index 3e785f612..b87b927a9 100644
--- a/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
+++ b/src/ImageSharp/Formats/Tiff/TiffEncoderCore.cs
@@ -169,7 +169,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff
long currentOffset = writer.BaseStream.Position;
foreach ((long, uint) marker in this.frameMarkers)
{
- writer.WriteMarker(marker.Item1, marker.Item2);
+ writer.WriteMarkerFast(marker.Item1, marker.Item2);
}
writer.BaseStream.Seek(currentOffset, SeekOrigin.Begin);
diff --git a/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs b/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
index 8c83f41cc..138274d3f 100644
--- a/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
+++ b/src/ImageSharp/Formats/Tiff/Writers/TiffStreamWriter.cs
@@ -125,6 +125,14 @@ namespace SixLabors.ImageSharp.Formats.Tiff.Writers
/// The offset returned when placing the marker
/// The four-byte unsigned integer to write.
public void WriteMarker(long offset, uint value)
+ {
+ long back = this.BaseStream.Position;
+ this.BaseStream.Seek(offset, SeekOrigin.Begin);
+ this.Write(value);
+ this.BaseStream.Seek(back, SeekOrigin.Begin);
+ }
+
+ public void WriteMarkerFast(long offset, uint value)
{
this.BaseStream.Seek(offset, SeekOrigin.Begin);
this.Write(value);