This seems excessively complex, rather than having the later handler (the one turning a non-zero float into a zero fixed) be patched instead. I figure it would be correct for all backends to turn very tiny but non-zero line widths into the smallest ones they can render.