Ran into a similar issue with downscaling using transform: scale(ratio)
, except the borders would entirely dissapear on subpixel rendering instead of blurring.
Since I was in a similar use case (dynamic scaling with js), I decided to implement the javascript solution suggested in the comments by the original author:
container.style.transform = "scale(" + ratio + ")";
elementWithBorder.style.border = Math.ceil(1 / ratio) + "px solid lightgray";
In an upscaling situation I would however suggest Math.floor() to avoid 'fattening' the borders too much.