Some characteristic of scalers are that they leave some blur at the output image. It’s basically unavoidable when you need to scale by 4x or more, because you need to fill 16 pixels for each input pixel. Some scalers like pure xbr can scale without introducing blur, though they can’t resolve low contrast color transition very well (basically, games with seamless color transitions like DKC or MK).
So, to use a general purpose scaler (the ones that resolve low contrast color transitions well), it’s recommended to use some sharpening shader as a final touch to get rid of the blur byproduct of scaling.
I’ve been testing many sharpening filters available out there (adaptive sharpen, anime4k, finesharp, etc). Though they bring good results, the one that really shines is deblur (by @guest). It just works perfectly by removing blur without introducing collateral effects (like ringing).
On super-xbr, deblur combined with smartsmooth (another great shader by @guest), it gets some impressive results I didn’t see before. Smartsmooth is good to thin dark lines. As low res cartoon games use black outlines for objects, if you scale by 4x, the black lines become too thick, so it’s necessary to thin those lines for a better ballanced image output. That’s where smartsmooth enter.
Here’s a combination of super-xbr + smartsmooth + deblur:

Preset:
shaders = "8"
shader0 = "shaders_slang/xbr/shaders/super-xbr/super-xbr-pass0.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/xbr/shaders/super-xbr/super-xbr-pass1.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders_slang/xbr/shaders/super-xbr/super-xbr-pass2.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "PassPrev2"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/xbr/shaders/super-xbr/super-xbr-pass0.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/xbr/shaders/super-xbr/super-xbr-pass1b.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "2.000000"
scale_type_y4 = "source"
scale_y4 = "2.000000"
shader5 = "shaders_slang/xbr/shaders/super-xbr/super-xbr-pass2.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/warp/shaders/smart-morph.slang"
filter_linear6 = "false"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/deblur/shaders/deblur.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
parameters = "XBR_EDGE_STR;XBR_WEIGHT;XBR_ANTI_RINGING;MODE;XBR_EDGE_SHP;XBR_TEXTURE_SHP;SM_MODE;SM_PWR;SM_STRMIN;SM_STRMAX;SM_CUTLO;SM_CUTHI;SM_DEBUG;OFFSET;DEBLUR;SMART"
XBR_EDGE_STR = "2.000000"
XBR_WEIGHT = "1.000000"
XBR_ANTI_RINGING = "1.000000"
MODE = "2.000000"
XBR_EDGE_SHP = "0.400000"
XBR_TEXTURE_SHP = "1.000000"
SM_MODE = "0.000000"
SM_PWR = "0.500000"
SM_STRMIN = "0.000000"
SM_STRMAX = "1.000000"
SM_CUTLO = "0.000000"
SM_CUTHI = "1.000000"
SM_DEBUG = "0.000000"
OFFSET = "2.000000"
DEBLUR = "2.000000"
SMART = "0.500000"