Okay, for starters, I should apologize sincerely and hope I don't get sent to programmer hell D:
I posted incorrect information: topograph is not a std::vector, but rather a class that encapsulates a vector. The vector is used to store a heightmap, and access is done by multiplying y by h and adding x.
I conducted a few tests, and I've determined that the issue is most likely in that very function.
When the entire populating stage of topograph was skipped, and rand()%256 inserted in its place, the screen showed random noise as it should.
When topograph was populated via Perlin, scaled, and displayed using the code posted in the OP, it showed the bars.
When topograph was populated via rand(), scaled, and displayed, it showed the bars.
When topograph was populated via rand()%256, not scaled, and displayed, it showed bars.
(int)topograph.at(xcounter, ycounter) is the culprit, or perhaps scale() is, too.
Sorry for causing consternation over the wrong information >_<