This is not an issue we can resolve easily or within the framework. Basically it all boils down to how high dpi is handled.
By default we use css size meaning the back buffer of the canvas is inversely proportional to the zoom level (devicePixelRatio) so every canvas pixel are laid out on several native pixels → text looks blurry.
By changing the hardwareScalingLevel you now have on the canvas back buffer the same res as native which is a lot of pixels to display and rendered think about rendering games at native 8k for instance which obviously is a lot but the text would not be blurry.
The only workaround bringing the best of both worlds could be in your application to setHardwareScalingLevel to native res, then render all of your scene but gui into a renderTargetTexture of your css or desired resolution (smaller than native)
Finally, blit the RTT on the canvas (linear interpolation to magnify) and render the GUI on top.
This would only work for full screen GUI and not for texture created for 3d content.