how can figure renderer be changed in Matlab 2025a?

Hi all,
I have recently updaged to 2025a from 2024b and immediately noticed a rather degraded figure quality. They look like some very pixelated plots from the 90s. Even the buttons on the axes within the figure are pixely and clipped. Matlab's main window looks fine.
rendererinfo tells me that the GPU (RendererDevice) used for figures is the internal Intel UHD Graphics, despite Windows expliciely set to use the dedicated NVIDIA GPU for Matlab 2025a.
gpuDevice is set to NVIDIA, I know this is for computing on gpu, not rendering figures, but it does tell me that Matlab can see the NVIDIA GPU.
I could not find any information on how to change the RendererDevice through commands or settings - is this a bug or a known issue?
Has anyone encountered this? Are there any solutions or workarounds?
Here's a screenshot from 2025a:
2025a version
and here's the same figure in 2024b:
Note the much smoother lines in 2024b and axes controls not clipped and not pixelated. Both figures were set to same size (Position) and screenshot on the same screen.

4 Comments

I'd like to investigate in more detail why you are seeing pixelated plots, which I doubt is related to the graphics card that is being used. I would be surprised if switching between the Intel UHD Graphics and your NVIDIA GPU had any impact on this behavior.
Can you provide the full output from rendererinfo? There are more details included that may be a clue as to what is happening.
My first suspicion is that you are suffering from an issue related to display scaling. Can you let us know:
  • how many monitors you have attached to your computer
  • what the native resolution is for each monitor, and
  • whether you have the display scaling set the same for all your monitors?
  • Do you see the same issue if you move the figure to a different monitor?
Another issue you may be encountering is an issue related to line joins or how the line is downsampled when the data density is significantly higher than the screen resolution.
  • Try changing the LineJoin on the lines from the default ("round") to "chamfer" and see if that makes a difference.
  • Can you provide some sample data so that others can test and see if they are experiencing the same issue?
Hi Benjamin,
Thanks for quick answer!
Here's the output from rendererinfo:
GraphicsRenderer: 'WebGL'
Vendor: 'Google Inc. (Intel)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (Intel, Intel(R) UHD Graphics (0x00004688) Direct3D11 vs_5_0 ps_5_0, D3D11)'
Details: [1×1 struct]
I have a workstation with one monitor connected with resolution 3440x1440. The laptop screen is 1920x1200. I do see the same issue regardless whether the external monitor is connected, or if I move the figure window between screens.
Scaling is 125% for native and 100% for external, both recommended by Windows. I have tried to set both to 125% and 100% (with Matlab restarts in-between) - no effect.
Setting linejoin to "chamfer" did something. Immediately after the figure rendered much smoother, including axes controls icons (!). However, I cannot replicate the effect. The figure looked fine on external monitor (with 100% scaling) but pixelated on the native screen (125% scaling). I then restarted Matlab and retraced, but now on my native screen it looks fine while on the external it's pixelated (no changes to either scaling).
The axes controls icons are pixelated as soon as the axes are created, even if the axes are empty.
I attach some test data.
The code I used for plotting is:
figure;
tlH = tiledlayout("horizontal", TileSpacing = "tight");
tlV(1) = tiledlayout(tlH, "vertical", TileSpacing = "none"); tlV(1).Layout.Tile = 1;
tlV(2) = tiledlayout(tlH, "vertical", TileSpacing = "none"); tlV(2).Layout.Tile = 2;
for snr = 1:2
for vv = 1:6
ax(vv, snr) = nexttile(tlV(snr));
hold(ax(vv, snr), "on");
grid(ax(vv, snr), "on");
plot(ax(vv, snr), data, '.-');
legend;
end
end
linkaxes(ax)
Tried with and without the marker.
I'm sorry I dropped the ball on this.
A colleague of mine has tried to reproduce this issue using the reproduction steps you mentioned, but they cannot reproduce the issue. They would like to learn more about this issue you are having.
If you are still having this issue and are interested in engaging directly with my colleague, please send me a message directly (via MATLAB Answers) with your email address (or perferred contact method), and I will give that information to my colleague.
I don't know if this is related but in my case, the figure quality in standalone windows is OK, but when plotting inside an MLX, it renders at "100%" resolution, a small plot... If I increase the zoom factor and rerun, resolution is still low and it looks pixelated, whereas in 2024b, increasing live editor zoom and rerunning did plot larger full-res plots.

Sign in to comment.

 Accepted Answer

Thanks to Amar Satrawala from MathWorks for the workaround fix:
___________________________________
The are two issues here, one related to lines, and the other related to markers. There is a behavior change wrt to point markers in 25a release. We have plans to fix that in the upcoming releases.
However, I can try to mitigate the issue related to markers. I am attaching a pcoded file leveraging hidden functionality that you can use as follows:
p = plot(ax(vv, snr), data, '.-');
fixMarkerVertexAlignment(p);
___________________________________
The function also accepts a cell array of plot handles or line handles array (i.e. as output from findobj() ).

More Answers (4)

Hi Oleg,
This is a known issue with MATLAB R2025a/b, You can switch the GPU for graphics rendering through the following steps:
  1. Open Windows Settings System Display Graphics Settings
  2. Under "Custom options for apps", Click "Browse" and navigate to: C:\Program Files\MATLAB\R2025a\bin\win64\matlabwindowhelper.exe (Path may differ on Win32 systems)
  3. Click "Options" and select "High performance" with your Nvidia GPU
  4. Save the settings
We’re aware of this and are preparing an External Bug Report so users can follow updates. We’re also working on a mitigation to guide users in selecting the GPU they want MATLAB to use for graphics.
James Richard
James Richard on 3 Oct 2025
Edited: James Richard on 3 Oct 2025
MATLAB R2025a is build on top of CEF that uses ANGLE.
---
Although with ANGLE we could choose the backend (e.g., D3D11, OpenGL, or Vulkan) to run WebGL 2.0.
But just like any Chromium-based browser, there are no direct flags or switches to choose a specific GPU to use.
It is handled by external settings, such as those of the operating system, driver, or environment variables.
P.S. Perhaps it would be possible to use a DLL hook as a last resort, but that is beyond a layman.

7 Comments

James, thanks for the hint - I found the bugger.
So, I've had Matlab.exe set to run on the dedicated GPU in both Windows Settings -> Graphics settings, and NVIDIA Control Panel. This has worked for me since 2012 when I first started using NVIDIA Optimus gpu switcher.
However, for 2025 edition that setting did absolutely nothing for the figures. Why? Because apparently Matlab now graciously delegates figure graphics to a process called "matlabwindowhelper.exe", and that one is for reasons beyond my understanding is not linked into the whole "this is Matlab, actually" family, in fact it is not deemed worty to even be listed it in the graphics settings by Windows.
Forcing that to run on dedicated GPU in NVIDIA Control Panel changed the rendererinfo output:
GraphicsRenderer: 'WebGL'
Vendor: 'Google Inc. (NVIDIA)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (NVIDIA, NVIDIA RTX A4500 Laptop GPU (0x000024BA) Direct3D11 vs_5_0 ps_5_0, D3D11)'
Details: [1×1 struct]
Hopefully 3D plots will be faster now.
HOWEVER, the plot controls are still clipped and pixelated, and the line-plots are not as smooth as they were in the 2024 edition. But perhaps it is a WebGL issue rather than Matlab issue?
Okay, this one is interesting.
RTX A4500 is a modern 2021 card, there shouldn't be any bug.
Perhaps try R2025a Update 1 or R2025b that uses higher version of CEF?
---
Also, have you tried the other ANGLE backend?
For example to use OpenGL, you could set the startup options with the system (not user!) environment variable of
MW_CEF_STARTUP_OPTIONS
with the value of
--use-angle=OpenGL
and also try the Vulkan backend with
--use-angle=Vulkan
Yes, I tried this in both 2025a (latest) and 2025b.
With environment variables I am not sure how you mean system not user - setenv() with name/value as you suggest doesn't seem to change anything and doesn't persist after Matlab restart (getenv() returns empty).
I mean the operating system machine-wide environment variables.
Close matlab, set the environment variable, then open matlab again.
I hope by changing the angle backend, you'll get different result.
Right, tried that, does not make the figures any prettier. In fact the --use-angle=OpenGL option got them very wonky and laggy (but different result, heh), with markers shifting between squares and circles (!) when zooming. Option --use-angle=Vulkan had no visible effect at all.
As a sidenote, just restarting Matlab was not enough, a full system reboot was needed (because Windows).
For reference, here are the rendererinfo outputs.
after --use-angle=OpenGL (+ reboot):
GraphicsRenderer: 'WebGL'
Vendor: 'Google Inc. (Google)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)'
after --use-angle=Vulkan (+ reboot):
GraphicsRenderer: 'WebGL'
Vendor: 'Google Inc. (NVIDIA)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (NVIDIA, Vulkan 1.4.312 (NVIDIA NVIDIA RTX A4500 Laptop GPU (0x000024BA)), NVIDIA)'
Weird, here with Win11 25H2 Pro for Workstation x64, I don't need to reboot, just restart the matlab is sufficient.
Anyways, that is interesting that the use of OpenGL backend makes it fallback to cpu/software rendering and causes artifacts with the markers, furthermore the Vulkan backend has no effect.
Try to use D3D9 backend, D3D9 doesn't support WebGL2 (rendererinfo will be blank) but might worth the experiment.
--use-angle=D3D9
---
Else, then we may need to have a new experiment.
Since simulink scope and figure container might have different rendering.
Try to plot your data with simulink scope and see whether the graphics aliasing (pixelated) is present.
For example,
---
Else, follow the Ray's advice.
---
Else again, in the comments above you've shown the code only to plot but not with the data. Please also post the sample data codes and I'll try to reproduce.
Hi James,
Just to follow-up:
if you want to try.
I got a fix for the issue though, will post it separately to close the thread.

Sign in to comment.

Suman
Suman on 20 Jun 2025
Edited: Suman on 20 Jun 2025
For plotting and MATLAB graphics, you cannot currently choose which GPU is used from within MATLAB. MATLAB makes a call to the system through OpenGL and uses the device that the system provides.
Please make sure you have NVIDIA Opengl drivershttps://www.nvidia.com/en-us/drivers/ installed on your system.
Then you can follow the steps mentioned here to switch the default graphics card: https://www.mathworks.com/matlabcentral/answers/322105-how-can-i-change-the-opengl-renderer
Hope that helps!

1 Comment

The question is specifically about R2025a. As of R2025a, OpenGL is no longer used and the opengl() command has no effect. From the release notes:
The following options for querying or setting the graphics renderer have no effect. MATLAB no longer uses OpenGL® technology to render graphics, and you no longer need to set the renderer in your graphics workflows.
Calling the opengl function has no effect. To query the graphics renderer, use the rendererinfo function instead.
The Renderer property of a figure has no effect.
The MATLAB startup options -softwareopengl, -nosoftwareopengl, -softwareopenglmesa, and -noopengl have no effect.
The opengl function, Renderer property, and startup options will be removed in a future release.

Sign in to comment.

The figure renderer cannot be changed in R2025a. This is a fundamental change in R2025a, that OpenGL is no longer used and WebGL is used instead.

2 Comments

@Walter Roberson: Despite the wording of the question title, I think @Oleg S was asking whether you can change what graphics card is used by MATLAB, not the value of the Renderer property on figures.
To clarify, the figure renderer ("painters" etc) is not the issue. I did try to change them though, to no effect.
I suppose I was confused myself between the renderer device and the renderer, my bad.

Sign in to comment.

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products

Release

R2025a

Asked:

on 19 Jun 2025

Answered:

on 1 Dec 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!