Я не готов назвать себя ГУРУ (и ему подобному) в создании DLL, но я грешу на "RTTI у DLL и EXE разные". А именно твоё
Код:
procedure ModifPicture(var p: TBitMap);
, на мой взгляд в EXE и DLL получается разное (из-за класса TBitMap).
Я бы использовал HBITMAP.