Delphi から特定の Win32 API を呼び出す - asm pop なしで例外が発生するのはなぜですか?

pascal と stdcall だとは思えません。これらは非常によく似た呼び出し規約であり、関数の終了時にスタックの不一致が発生することはありません。

参考記事より

関数に渡される余分な「最高の配列インデックス」パラメーターを取得しています。これは int であり、スタックが破損してクラッシュしないように、関数の終了時にクリーンアップする必要があります。この記事は、配列を C 関数に渡す方法を示しています。

次のようなもの:

type
 PLPXLOPER  = ^LPXLOPER;

そして最後のパラメータとして PLPXLOPER を渡します。