А у меня всё работает нормально, 1600x900.
Может у вас памяти не хватает и XGetImage возвращает NULL?
Кроме того, XGetImage у вас возвращает прямоугольник, который на 1 пиксел меньше размеров экрана, и по x и по y, а XGetPixel вы зовёте по полной ширине и высоте экрана.