¿Cuantos objetos TGifViewer creas? ¿Los destruyes?
Prueba con este cambio en el destructor:
Código Delphi
[-]
destructor TGifViewer.Destroy;
begin
dec(GDI);
Finish;
SetHandle(0);
if GDI = 0 then
begin
CloseHandle(hEvent);
GdiplusShutdown(gdiplusToken);
end;
inherited Destroy;
end;
Saludos.