When you say it that way, it's actually baffling that there's still separate code paths for solid background colors.
Just offer a background picker, and have it generate a 1x1 PNG, for the color selected. Just like that, you can use the image background code path for everything; and the code for generating the image almost certainly exists in the OS already. Maybe add some metadata to the generated image to filter it from the images picker, and you're done.
It feels like a lot of these non-sense features is what you get after years of fixes and releases, it's hard to envision a full system 10 years out and get it right, and there's almost never time to clean up unless it's a greenfield project or something.
Just offer a background picker, and have it generate a 1x1 PNG, for the color selected. Just like that, you can use the image background code path for everything; and the code for generating the image almost certainly exists in the OS already. Maybe add some metadata to the generated image to filter it from the images picker, and you're done.