I had a similar problem on my game! Because I was rendering my canvas at 320x180 I couldn't use any built in primitive drawing or text drawing methods without it looking super blurry and gross lol. Not entirely sure for Godot, but in my case I think it's the antialiasing that's turned on by default for those drawing methods. No way to turn it off using html5 canvas unfortunately... I ended up having to use a weird html5 canvas API that allowed me to copy sections of the frame buffer, and manually tweak pixels, and shove it back on. To get text to work I had to make my own font and font rendering. The lengths to which we will go for pixels... yeah?
Anyway I thought your water was actually really nice. But particles would have spruced it up I agree :)