eh, yeah, the png loader functions are more or less a bit of a hack now. there's this library that i found, that could be used both from c and c++, and its sources is setup a bit weird i think. i just hacked it into there to get some png files up and running.. the simplest helper-functions in there... and, there's some #define's at the top of the lodepng.h file (in the extern subdirectory), to conditionally compile things like encode/decoder/file-io functions. i specifically removed the file loader funcs, as they added around 3-400k to the exe, even if i didn't use them. :-/ i've been thinking about a separate BitmapLoader class or something, later... the process of using bitmaps is a bit long and messy now: 1) have a png in a buffer in memory (to include it directly in the dll/so) 2) decode this to a rgba temporary buffer 3) mess with rgba/alpha/transparency, since the bare-bones x11 (without extensions) doesn't support alpha, and there's some differences in byte-ordering, bit-depth, etc.. 4) setup a bitmap (for driver/hardware blitting, and hopefully correct format-conversion) (memory bitmap) 5) blit this to another off-screen surface (video mem). i could use the previous bitmap directly, and blit that during widget rendering, but i found video-memory/server surfaces to generally be much faster, both on windows and linux.. 6) and then, use this final surface when blitting during the life of the plugin... some of this is because i want the library to be cross-platform, and have the same (or most) features similarly available on both win32 and linux... - ccernn and, any help and contributions would be highly appreciated! and yes, i know there needs to be some code cleanup, and also some (at least rudimentary) documentation, or notes to get the initial overview of things...