Risolto: per chiunque avesse lo stesso problema ecco lo stralcio di codice. Ho utilizzato le psychtoolbox per comodità.
try
oldVisualDebugLevel = Screen('Preference', 'VisualDebugLevel', 3);
oldSupressAllWarnings = Screen('Preference', 'SuppressAllWarnings', 1);
% Find out how many screens and use largest screen number.
whichScreen = max(Screen('Screens'));
window = Screen('OpenWindow', whichScreen);
% Trovo la risoluzione del monitor ed i valori centrali
PsychImaging('PrepareConfiguration');
[win winRect] = PsychImaging('OpenWindow', window, 128);
[w, h] = RectSize(winRect);
% Nascondo il cursore del mouse
HideCursor;
% Setto il codice-colori
black = BlackIndex(window); % Retrieves the CLUT color code for black.
white = WhiteIndex(window); % Retrieves the CLUT color code for white.
gray = (black + white) / 2; % Computes the CLUT color code for gray.
% Mostro la schermata grigia iniziale
Screen('FillRect', window, gray);
% [......] Creo gli elementi da mostrare nello schermo
% Disegno l'immagine
t = Screen('MakeTexture',window,patt);
Screen('DrawTextures',window,t,[],[coord(1),coord(2),coord(1)+col(1,1),coord(2)+col(1,2)]);
% Disegno l'immagine finale sullo schermo
Screen('Flip', window);
% Chiudo tutte le finestre
Screen('CloseAll');
% Mostro il cursore
ShowCursor;
% Ripristino le preferenze
Screen('Preference', 'VisualDebugLevel', oldVisualDebugLevel);
Screen('Preference', 'SuppressAllWarnings', oldSupressAllWarnings);
catch
Screen('CloseAll');
% Mostro il cursore
ShowCursor;
% Ripristino le preferenze
Screen('Preference', 'VisualDebugLevel', oldVisualDebugLevel);
Screen('Preference', 'SuppressAllWarnings', oldSupressAllWarnings);
% In caso di errore mostro la tipologia di errore
psychrethrow(psychlasterror);
end