I have put in /n/sources/contrib/lucio/pub/npng.c a PNG renderer that uses the Open Source libpng library: . There is also a man page (npng.1) that roughly describes its behaviour but is not (yet) totally accurate; I'm going to try to catch up with the inaccuracies in the next few hours. Its most significant feature is that it can render 24-bit and even 48-bit PNG images and that it can convert, seemingly successfully, colour pictures to grey-scale. On the other hand, much discussion with Russ Cox has not yet convinced me that there isn't an error outside of my code that causes α-blending to break. As a result I have defaulted (as documented) the behaviour of npng to strip the α-channel and I'm hoping that someone else will inspect the pertinent code and help me correct its behaviour. Strangely, grey-scale operation does not seem to be affected. There are a couple of less fundamental issues that I would also appreciate comments on, they are described in the BUGS section of the man page. Ideally, npng ought to be a plug-in replacement for png(1), but there are inconsistencies that may or may not be addressable. Comments in this regard will also be readily accepted. I have at the same time submitted patches to those APE headers (/sys/include/ape/*.h) that provide non-Posix/ANSI enhancements to make them somewhat easier to use, but very much in a Unix-oriented fashion, almost certainly diverging from conventional Plan 9 practice. These changes are mandatory to be able to build npng, but not for the libpng and zlib libraries that are its prerequisites. Complete library distributions, with mkfiles, for the most recent versions of zlib and libpng as well as mkpublib, required by these mkfiles as and more or less allow it to be replaced by a native offering, but I haven't been able to make the necessary adjustments. Anybody interested in such a development is welcome to contact me on or off list(*). It is non-trivial, as the dependence on Posix features increases as one gets higher on the ladder and jpeg, gd, tiff and geotiff all need to be able to interface successfully to such modified libraries and, ideally, in turn be free of APE dependencies themselves. Error handling in libpng has also not received due attention, here I'm very much on a limb, not knowing how to implement it. (*) My mailer will filter out messages from unregistered senders to a separate folder which I then inspect more or less regularly. Contacting me on this list will allow me to register new senders.