UIStroke ScaledSize causing render corruption

When a UIStroke under a CanvasGroup with ScaledSize has a UIGradient child, very weird rendering behavior begins to occur when that CanvasGroup has its Size properties tweened (in my case: to 0’s).

What it looks like after corruption has occured:


What it should look like (minus the leaderboard, forgot to include):

This rendering behavior occurs in both studio play, and the Roblox player. Friends have confirmed the same behavior happens to them as well. Friends have also confirmed that they were able to reproduce using my place file below.

Step-by-step reproduction:

  1. Create a ScreenGui with a CanvasGroup
  2. Put a UIStroke under that CanvasGroup, set it’s StrokeSizingMode to ScaledSize.
  3. Put a UIGradient under the UIStroke. Edit the UIGradient’s Transparency to have at some point in the NumberSequence a value of 1 (this was my case at least)
  4. Tween the CanvasGroup’s size to be {0, 0, 0, 0}. When the tween has finished, corruption should begin to occur in other UIObjects.

Cases I’ve found that immediately fix the rendering issues:

  • Setting the UIStroke’s SizingMode to FixedSize
  • Setting the CanvasGroup’s visibility to False
  • Deleting/Disabling the UIGradient
  • Deleting/Disabling any of the three instances that create this behavior
  • Disabling the parent ScreenGui

This place file has my UI that triggered my investigation. I also added a LocalScript under the ScreenGui that automatically reproduces the behavior for you in play.
ui_corruption_repro.rbxl (76.1 KB)

2 Likes

Thanks for the bug report, we are taking a look. I can also reproduce the issue locally

We’ve deployed a fix for this in Studio (other platforms are waiting for the release). Please take a look and let me know if you’re still able to reproduce it

Seems to be fixed in my studio playthrough. Thanks!