Skip to main content

The recent Aspect Ratio update has brought with it a frustrating change to the way objects snap to the pixel grid.

Previously, when changing the size/position of an object by dragging, it would snap to the nearest pixel. If you needed to get more specific - and have an object at 1.5px width for example - you could change this via the properties panel without having that object snap to the nearest pixel in terms of positioning/size.

This felt like a really nice balance between snapping to the nearest pixel with the cursor, whilst retaining control over incremental choices via the properties panel.

Now, after the most recent update, we no longer have this control - when you change the size of an object in the properties panel it snaps to the nearest pixel.

For example, if I have a rectangle which is 6.5px wide and 1.5px tall, and I use the properties panel to change it's height to 2.5px, it'll automatically change the width to 6px. The same goes for positioning.

Of course I can go into the preferences and turn on/off 'Snap to Pixel Grid', but this feels laborious, especially considering how smooth the previous experience was.

Hey ​@Cammy Hogg , thank you for your detailed feedback! We've shared it internally with the team for consideration.


💯 Do not make Figma change properties the user did not change. If you change the height, do not have Figma go head and up date the width too.


I've been struggling with this issue for a while as well. 

Even if I have the “aspect ratio locked”, when “Snap to pixel grid” is ON and I edit the width of an object in the properties panel, it also snaps the height of the object to the nearest pixel which ends up changing the aspect ratio and distort the object.

This is so troubling. Wish this gets fixed asap.


I am trying to figure out how Figma handles rounding and snapping of width/height and X,Y. So far it looks like they operate differently. Why?

When on, the only two thing that I can find that “snap to pixel grid” actually does is:

1. if you have a fractional number for the width and height, manually rounding off one of the values (say changing the Width of a frame from 150.35 to just 150) will automatically assume you wanted to round up the other value (Height) as well and auto rounds. if you have “lock aspect ratio” on and just change the decimal but keep it fractional, it proportionally changes the other value correctly but neither gets rounded up. So this functionality should more accurately be called “Round all dimensions when rounding one” - but it gets weirder because that isn’t totally accurate either. 

If you have fractional x,y coords for the frame and fractional width and height - for example, start with a frame that has X=589.24, Y=341.52 W=78.34, H=69.33 - then if you:
-  Unlock aspect ratio and manually round the width number, BOTH the Height value and the Y value is rounded too. WTH? why the Y value and not both the X and the Y? is this a bug?
- Lock aspect ratio and manually round the width, only the Height value is rounded automatically. WTH? why not the Y value like when the lock aspect ratio?

so this breaks the “Round all dimensions when rounding one” feature name because it is more accurately described as “Round some dimensions when rounding others” and there is no rhyme or reason. This can’t be intentional can it? Seems like if you round one number regardless of lock aspect ratio on or off, it should round X,Y, Width, and Height all together if snap to pixel grid is on. 

2. When “snap to pixel grid” is on and you are repositioning a frame by dragging it, it overrides (Prioritizes) any fractional “snap to objects” values that are being snapped to and rounds to whole numbers. I say “Prioritizes” earlier because if you turn off snap to pixel grid, you still get whole numbers for X/Y when you drag a frame, it’s just that if you have snap to objects on, it snaps to the fractional numbers. 

So turning on “Snap to pixel grid” actually does very little and what it does do is unintuitive and makes no sense. 

All the other big design programs have snap to pixels at face value. turn it on, no fractional stuff. turn it off, you get fractions. Why so complicated in Figma? Actually no one really cares what the reason behind it is. It’s just weird. 

Ultimately I find myself manually deleting fractions all the time. The feature I want is a small button in the “Position” row and one in the “Dimensions” row of the right ui panel that just “rounds both numbers” when you click it. that way whatever happens you are two clicks away from whole numbers instead of fiddling around selecting type or trying to figure out the weirdly nuanced snap to pixel grid feature you implemented. 

Whatever you do I think you should really stop calling it “snap to pixel grid”. You already have that on all the time. Perhaps a better thing to call the option would be something like “fractional object snapping” against “whole number object snapping” because that is much closer to describing what you all shipped. I would also just kill the weird feature where if you delete the decimal places from the width or height, you get the auto rounding of the other numbers. Thanks! Love you. 


It just dawned on me that if my understanding above is correct, if you turn off “Snap to objects” there really is no point to turning on or off “snap to pixel grid” except for the inconsistent auto rounding that happens when you manually deleted the fractions. Besides that it would serve no function. It’s a check box on the menu but maybe better to be three radio buttons where only one can be selected - something like “no snapping”, “Snap to objects exactly”, or “Snap to objects but round to nearest pixel” - you have 3 mutually exclusive choices. Another way to do it would be to just change the name, so the “preferences” menu would be like:
 

Snap to geometry
Snap to objects
Constrain snapping to whole pixels

Because the scope of the function of “snap to pixel grid” is only when other snapping is happening. Constraining to whole pixels happens everywhere else by default, so the phrase “snap to pixel grid” is deceptive because it implies that globally all snapping to pixel grids will toggle on and off with this menu item. But it do not. 


Reply