diff --git a/StbiStreamWrapper.cs b/StbiStreamWrapper.cs
index 6ac068e..37b6ad1 100644
--- a/StbiStreamWrapper.cs
+++ b/StbiStreamWrapper.cs
@@ -12,18 +12,23 @@ namespace ReFuel.Stb
     /// C array to read into.
     /// Size of the C array in bytes.
     /// The number of bytes read from the stream.
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public unsafe delegate int StbiReadProc(void *userdata, byte* buffer, int count);
+
     /// 
     /// Pointer to STBI stream skip function.
     /// 
     /// User provided userdata pointer.
     /// Number of bytes to skip.
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public unsafe delegate void StbiSkipProc(void *userdata, int count);
+
     /// 
     /// Pointer to STBI stream end of file function.
     /// 
     /// User provided userdata pointer.
     /// Non-zero value if the end of the stream has been reached.
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public unsafe delegate int StbiEofProc(void *userdata);
 
     /// 
@@ -123,4 +128,4 @@ namespace ReFuel.Stb
 
         public static implicit operator IntPtr(in StbiWriteStreamWrapper wrapper) => wrapper.Callback;
     }
-}
\ No newline at end of file
+}
diff --git a/StbiWrite.cs b/StbiWrite.cs
index 94a3420..5432c17 100644
--- a/StbiWrite.cs
+++ b/StbiWrite.cs
@@ -9,6 +9,7 @@ namespace ReFuel.Stb.Native
     /// User provided context pointer.
     /// C Array of data to write.
     /// Size of the C array in bytes.
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public unsafe delegate void StbiWriteProc(void* context, void* data, int size);
 
     public unsafe partial class Stbi
@@ -24,7 +25,7 @@ namespace ReFuel.Stb.Native
         }
 
         public static int write_png_compression_level
-        { 
+        {
             get => *_png_compression_level_ptr;
             set => *_png_compression_level_ptr = value;
         }