(Two possible bugs)
First potential bug. I am not getting what I believe should be the correct behavior when convert a Class: DirectClass and Type: GrayscaleMatte PNG (with alpha channel) to PNG8 (expecting Class Pseudoclass and Type: GrayscaleMatte) so as to get a smaller filesize.
Here is the image I got from http://studio.imagemagick.org/pipermail ... 22567.html
Original

I removed the alpha channel to see what was there and also extracted the alpha channel:
Image without alpha:
convert jobs_original.png -alpha off jobs_original_aoff.png

Image alpha channel:
convert jobs_original.png -alpha extract jobs_original_alpha.png

So looks fine to me.
Now when I do:
convert jobs_original.png PNG8:jobs_original_png8.png

It is not what I expected
But when I make it gif, it looks like what I expected:
convert jobs_original.png jobs_original.gif

And if I do:
convert jobs_original.png GIF:- | convert - jobs_original_gif_png.png

The above also looks right and is of Class Pseudoclass and Type: GrayscaleMatte (so smaller filesize)
Second potential bug. When I do
convert jobs_original.png GIF:- | convert - PNG8:jobs_original_gif_png8.png
I now get an error message:
coders/png.c:6990: failed assertion `(unsigned long) packet_index < number_colors'
Abort trap