| Reference | Downloads | Github

Gamma correction applied to wrong monitor screen


I am trying to calibrate a ViewPixx monitor screen connected to an iMac. I have measured the luminance values on the ViewPixx screen, and entered them into the Monitor centre. However, when I run my script, the gamma correction is applied to the iMac screen rather than to the secondary, ViewPixx screen.

Even when I set the GammaGrid manually, I get this issue. How do I specify which monitor screen to apply the gamma correction to?



I’m not sure. Could be an issue with using the secondary screen of an iMac (I’ve never personally tried that).

But let’s just check… when you create the window are you creating it on the ViewPixx screen? In full-screen mode or window? Does it find the screen correctly? Does it enter full-screen mode?


Yes I am creating the window on the ViewPixx screen, but not in full screen mode. This manages to find the ViewPixx screen correctly. However, when I do change it to full screen mode, the window displays on the iMac rather than the ViewPixx, even though I have specified the Window to display on screen 1.


Oh, yes, that could be an issue with pyglet that I’d forgotten about. What version of sychoPy are you using? I wonder if the failure to gamma-correct is related to the failure to go full-screen on the second screen.

If you’re using 1.90 then you could try using the new glfw backend for the window instead of pyglet (although I think we didn’t add Builder support for that yet) so that we could work out whether the problem is the graphics library (pyglet) or the mac itself (I’ve seen mac minis before that seemed only to be willing to gamma correct one of their two outputs).

BUT I would also say that ideally with a device like viewpixx you’d gamma correct on the device itself. Doesn’t it have a way of uploading a gamma table to the screen itself?


I’m using PsychoPy 1.90 so I’ll try the glfw backend.

For now, I have managed a work around, where I mirrored the two displays and set the Display profile to ViewPixx. This is not ideal because the experiment running on the second screen is quite distracting, but for now it has worked in applying the gamma correction from psychopy monitor centre to the ViewPixx display. However, the colours do not look correct, so I’m unsure if it has corrected properly. How do I check if the luminance values are linearised correctly? When I click plot gamma, I receive the following error:

Traceback (most recent call last): File "/Applications/", line 1019, in plotGamma if lumsPre != None: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

I also can’t find any information about uploading the gamma table to the ViewPixx screen itself. All of the search results seem to involve psychtoolbox.