I think you need to offset x and y by -.5. Then you no longer get a jump when going from a supersampling factor of 1 to 2.
```
let x = j % hswidth - .5,
y = Math.floor(j / hswidth) - .5;
```
If you're aiming for a "realistic" appearance, then I'd recommend "hard-light" as the default (although line visibility will suffer due to the higher contrast).