Realizing that my main focus is Accessibility, followed by correct HTML, CSS, etc., "Pretty" is somewhere down my list.
Both the provided responsive_classic and lat9's ZCA Bootstrap are near perfect out of the box on accessibility and code correctness. The reasoning behind black on a white background is that the result is the best possible contrast for anyone, period. When you start adding an image as a background, you make it difficult for contrast checkers (except this one) can't check your result when you put text on top of a graphic.
Your bg.jpg does make matters a lot easier. If you tried to place text on one of your main page sliders, you'd have a much harder time. BTW, it's always better to have text over an image rather than in an image. Both search engines and those visually impaired cannot "see" the text.
Here's an option to try based on the ID 904 page you provided.
First, the subject of transparency. Zen Cart starts with a complete background that has many items laid on top in layers. In some cases, the layers on top of your bg.jpg can be four or more deep.
My solution, again for your ID904 page, is to make the white backgrounds somewhat transparent so that the background shows but does not overwhelm the most important information.
In CSS, it's known as opacity. The easiest way to deal with opaque colors is to use rgba code. That takes something like white (rgb - 255,255,255) and adds the a (opacity) so that rgba(255,255,255,1) would be solid white, rgba(255,255,255,0.5) would be half opaque, and rgba(255,255,255,0.1) would all but make the white disappear.
Again, in the case of the !D904 page, you have the bg.jpg under the #productGeneral div (white background) and the #productGeneral div has both the #productsDescription and #productsDetailList ul on top of the #productGeneral div.
That means, you have to adjust each layer differently so that it appears that the overall combination appears to have one background.
The following changes to your stylesheet will set a transparency for your overall product view and, then, make the details appear to have the same background as the #productGeneral div.
for your CSS:
Not using bootstrap, I would create a stylesheet_zcustom.css in your template's CSS folder and put all the override codes in there.
div#productGeneral { background-color: rgba(255,255,255,0.5);
}
#productDescription, #productDetailsList ul{
background-color: rgba(255,255,255,0.1);
}
Note that the second rule requires more transparency (less opacity) in order to "match" the rest of the #productGeneral.
Apologies if I'm covering items you're familiar with, but not knowing the expertise of a poster, I prefer to fully explain for future explanations for someone having the same problem and no clue what they're doing.
Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com