I tried both vlc and virtuadub2, they both save out washed out images. Both show and save out washed out images.
How can I save out these images so they look in proper HDR space?
First of all there is a bug in ffmpeg swscale that saves 16 bit per 3 component PNG, so use zscale instead.
https://trac.ffmpeg.org/ticket/7978#comment:7
ffmpeg -i PQ_HDR_file.mp4 -vf zscale=matrixin=2020_ncl,format=gbrp16le -an -frames:v 1 out_zscale.png
This will get you correct image (bt.2020-ncl matrix is removed correctly to R'G'B'). You still should present the file on HDR display since it will have PQ transfer (PQ is why you saw the gray image originally) and BT.2020 primaries. You may want to tag the file.