diff --git a/libobs/obs-scene.c b/libobs/obs-scene.c index ffc4028fc..9aa3f4a59 100644 --- a/libobs/obs-scene.c +++ b/libobs/obs-scene.c @@ -2321,8 +2321,8 @@ static void get_ungrouped_transform(obs_sceneitem_t *group, vec4_set(&mat.t, 0.0f, 0.0f, 0.0f, 1.0f); matrix4_mul(&mat, &mat, &transform); - scale->x = vec4_len(&mat.x); - scale->y = vec4_len(&mat.y); + scale->x = vec4_len(&mat.x) * (scale->x > 0.0f ? 1.0f : -1.0f); + scale->y = vec4_len(&mat.y) * (scale->y > 0.0f ? 1.0f : -1.0f); *rot += group->rot; } @@ -2357,8 +2357,8 @@ static void apply_group_transform(obs_sceneitem_t *item, obs_sceneitem_t *group) vec4_set(&mat.t, 0.0f, 0.0f, 0.0f, 1.0f); matrix4_mul(&mat, &mat, &transform); - item->scale.x = vec4_len(&mat.x); - item->scale.y = vec4_len(&mat.y); + item->scale.x = vec4_len(&mat.x) * (item->scale.x > 0.0f ? 1.0f : -1.0f); + item->scale.y = vec4_len(&mat.y) * (item->scale.y > 0.0f ? 1.0f : -1.0f); item->rot -= group->rot; update_item_transform(item, false);