There's a mathematical formula for figuring out if a foreground and background color are going to be legible -- and really that's your issue here, legibility. It's the Y component of a YUV colourspace, aka luminance. You need the 'emissive' formula, not the 'reflective' formula tools like Photoshop have built in. This formula can be found in the EGA/VGA reference, the joint IBM/Microsoft/Apple Interface guidelines, and the Web Content Accessibility guidelines.
Y = 29.9% Red + 58.7% Green + 11.4% Blue
If the difference between the two colors is less than 50% it's guaranteed to have legibility issues for more than half the population. An ideal contrast is closer to 75%, though some fancy (goofy) webfonts and font rendering engines, as well as font sizes can make you need anywhere from 85% to 100% contrast. No joke, some 'thin' fonts at small (sub 14px) sizes are illegbile even at 100% contrast. Part of why I'm not a fan of webfonts... the other part being their ridiculous file sizes
For example, let's take your first page's menu. That massive background image that -- to be brutally frank has no business on a website in the first place -- has both a black and grey background area. It is effectively impossible to come up with a color that reaches 50% difference to both of those at the same time. The black is obviously Y=0 since it's #000000 / r =0, g = 0, b = 0, while the gray is way up at #C0C0C0 / r = 192, g = 192, b = 192. In order to reach at least 50% on the gray you'd need to be down at 64 / #404040, but that's below the #808080 / 128 that the black has as it's minimum. Bottom line, that background isn't viable for having text over it. (on top of it's file size making it not viable for belonging on a website). There is no color that's going to work well with that and meet accessibility minimums.
You might have to resort to giving them their own solid (avoid transparency behind text! makes it harder to read) background if you are going to keep that background image. Though with so much of that image covered up I'd just axe it entirely.
The second site is similarly afflicted with one of those massive background images that you really can't put text over and have it legible, and is too big to belong as a background on a website in the first place.
You're putting text over images and using colors with insufficient contrasts. Solution? Don't put text over images and use the above math to make sure it's legible.