What if you try DeHalo_alpha() and sharpen back afterwards ?
This is what I use sometimes.
You got to vary rx and ry to fit your source of course.
Code:
# --------------------------------------------Start of DeHaloing------------------------------
#BlindDeHalo3(rx=3.2,ry=1.5) # or
DeHalo_alpha(rx=3.0, ry=2.5, darkstr=1.2, brightstr=1.0, lowsens=50, highsens=50)#gets rid of medium sharpening halos
# ---------------------------------
# function DeHalo_alpha(clip clp, float "rx", float "ry", float "darkstr", float "brightstr", float "lowsens", float "highsens", float "ss")
# rx = default( rx, 2.0 )#xradius for Halo removal 1.0...2.0...3.0 Set as low as possible. If set too high, it will start missing small spots.
# ry = default( ry, 2.0 )#yradius for Halo removal 1.0...2.0...3.0 Set as low as possible. If set too high, it will start missing small spots.
# darkstr = default( darkstr, 1.0 )#0.0..1.0 The strength factors for processing dark and bright halos. Default 1.0 both for symmetrical processing. <0.0 and >1.0 possible.
# brightstr = default( brightstr, 1.0 )#0.0..1.0 On Comic/Anime, darkstr=0.4~0.8 sometimes might be better ... sometimes. In General, the function seems to preserve dark lines rather good.
# lowsens = default( lowsens, 50 )#0..50..100 Sensitivity settings, not that easy to describe them exactly ... in a sense, they define a window between how weak an achieved effect has to be
# highsens = default( highsens, 50 )#0..50..100 to get fully accepted, and how strong an achieved effect has to be to get fully discarded. Defaults are 50 and 50 ... try and see for yourself.
# ss = default( ss, 1.5 )#1.0..1.5..Supersampling factor, to avoid creation of aliasing.
# --------------------------------------------End of DeHaloing--------------------------------
Followed by one of these sharpeners:
LSFmod (moderate and nice)
SSSharp2 (slow and more ringing, but sometimes very helpful, depending on nature of source)
MedSharp2(veryslow, but awesome)