TL;DR
The "black fuzzy outline" drawn around alt-info icons via shader does not work well at all for dark icons. This is why dark_background_icon(s) exists for item prototypes. However, recipes do not have the equivalent property.Currently, the colour/transparency and outline size of the "fuzz" is defined in data.raw["utility-constants"]["default"], and these can be overridden by a mod, but only for all alt-info icons everywhere all at once (i.e. on all machines, pipes, storage tanks, etc.). There is no magical alternative to black that works well on all entities with all icons.
It would be most excellently useful to be able to specify the outline colour and radius per icon (best case) or per recipe (typical use case).
Long version
There is only one item in the vanilla game that is sufficiently dark to need its own special icon for alt-info rendering: coal. However, I'm currently juggling with coal, crushed coal, carbon, carbon fibre, rubber, and about nine objects made of lead. They're all black or dark grey. I could make them shocking pink but then they wouldn't look like coal or carbon or rubber or lead.You can specify an alternate dark_background_icon in ItemPrototype. Vanilla coal does this. It is of course extra work for modders to maintain two parallel sets of icons for whole classes of items, but at least there's the option. However, no equivalent exists for recipes. The dark version is shown by a recipe only if the recipe prototype is defaulting to the main product's icon. If you have a more complex recipe with no single main product, i.e. it has to specify its own icon(s), and if any of those icons are dark, then it won't be visible against a dark background such as the one drawn by the alt-info "black fuzz" and there is no way of specifying an alternative in a recipe prototype (see request).
You can also (as of fairly recently) completely disable the icon outline for any specific entity that inherits the CraftingMachine prototype's properties (CraftingMachine.draw_entity_info_icon_background). But that's an all-or-nothing approach: it applies to all recipes being processed by the machine regardless of how bright or dark they are and it looks worse than not having the outline 99% of the time.
However, the game already provides a shader method of distinguishing icons from the background: the alt-info black fuzzy outline. This black colour is currently defined in the utility constants: it can be overridden by a mod, but only for all alt-info icons on all entities.
If the colour (and ideally radius) could be specified per recipe (or per icon), no-one would need to maintain different icon versions at all. You could just specify, use an orange fuzz for this specific recipe when it is being used as an alt-info icon. The icon would still appear normally in crafting tabs (i.e. no outline, or whatever shading is currently used for the inventory tab), but it would also be distinguishable from the background in the game screen when alt-info mode is on.
Advantages: no-one, including vanilla, would ever need to build a dark_background_icon again. And the method could apply equally well to both items and recipes.
I don't know what kind of overhead this might introduce because I don't know much about shaders. But if forced to guess, I would guess that the extra overhead of looking up a constant per recipe prototype couldn't be considerably greater than pulling it from the utility constants, unless there is some kind of shader compilation thing going on during start-up that I don't know about.
Example of a overridden orange alt-info outline which really helps with dark icons:
But it looks putrid on coloured icons: