You have to clear the color buffer every update:
glClearColor(0f, 0f, 0f, 0f);
glClear(GL_COLOR_BUFFER_BIT);
EDIT: To clarify: the color buffer (and depth buffer if you're working with 3D) MUST BE CLEARED every frame before the Display updates. If it is not cleared, it will be filled with random data (hence the checkerboarding and foobar.)