Gap left in stroke due to smoothing?

Is something not working like it should? Let us know.
User avatar

2019-11-29 04:02:41

I'm trying to repair an outline on an illustration, but the stroke (when set to Position: Outside) doesn't hug the shape. It looks like there's some degree of smoothing being applied here, which leaves a gap between the illustration and the stroke. I can't figure out if this is intentional, or how to disable it.

I don't think this was happening in the previous version, as my workflow has stayed pretty much the same.

Here's what's happening:


Here's what I expected to see:


I was able to do this by loading the layer selection, expanding it by 1%, then creating a new layer underneath, filled with black. I'm not sure if/why the stroke behaviour changed.
User avatar

2019-12-02 15:46:35

I have a feeling those pixels aren't fully transparent so I would guess that's the reason the stroke is appearing slightly away from the main content. Do you happen to have a copy of the previous Pixelmator on your Mac still? If so, would you be able to check the results you get in it with that same image?
User avatar

2019-12-02 19:48:23

The pixels are fully transparent. I’ve confirmed that multiple times. The second result (as I said) was produced by selecting the layer mask, expanding by 1%, and filling with black. If there had been partially transparent pixels around the edges, the stroke would not have looked as clean, and would have followed the same, oddly-rounded contour as the stroke style.

I don’t have a copy of the previous version. Pixelmator Pro updates automatically though the App Store, and there’s no way to downgrade.

EDIT: Here's the file in question. Maybe you can tell me what's going wrong.
User avatar

2019-12-03 17:24:07

Thanks for sharing the file! I've now checked this in Pixelmator Pro 1.4, 1.1.1 and the original Pixelmator and the result is very similar everywhere (Pixelmator Pro is slightly better, but there's no difference between 1.5, 1.4, and 1.1.1). I can see this is down to our stroke smoothing algorithm which does a great job at making the stroke look smooth and nice but also results in these gaps being created. But it doesn't look like the algorithm changed at any point. In addition, there's quite a simple workaround that should work for you which is to duplicate the layer, apply an inside stroke to the lower layer, and an outside stroke to the upper layer. Here's what that looks like:

ImageHope that helps!
User avatar

2019-12-03 18:43:25

I knew there was some kind of smoothing algorithm being applied here. The stroke is all over the place (thickness-wise) in that version you posted, and is definitely not the look I’m going for.

How can I disable this? This behaviour is downright bizarre, and makes the stroke tool completely useless for me, and I can't imagine a scenario where having a stroke that doesn’t follow the contour of a layer is a desired outcome.

(I guess my previous emote-making endeavours just didn't have as detailed of a contour...)
User avatar

2019-12-04 13:48:15

Understood, this particular smoothing algorithm has been present in every previous version of Pixelmator Pro, so it's unusual that the tool has only become completely useless recently, but there's definitely room for improvement here and those gaps shouldn't be left behind, I agree. I've also found that, while the nondestructive Stroke layer style in the original Pixelmator works just like in Pixelmator Pro, the destructive Stroke effect (again, in the original Pixelmator) works the way you'd expect. So we do have the technology somewhere. In any case, thanks for bringing this to our attention (and sorry for thinking the bug wasn't quite as serious at first glance...).
User avatar

2019-12-04 19:13:06

It’s possible previous work was larger, or had a more naturally smooth contour, so the effect wasn’t as pronounced or noticeable. I don’t know, I only do emotes once a month or so.

In any case, I appreciate you investigating this.

I’ve been weaning myself off Photoshop for the past couple of years, and while Pixelmator (+Pro) is often better (and gets better with each update), I’ll still run into little things like this that make a seemingly simple task quite frustrating. I know it was a decision made by the team at one point to smooth the stroke, and I’m sure there’s a good reason behind it (even if it looked better in testing), but it’s always good to have a choice in these circumstances, since everyone’s requirements or workflow will be as diverse as the projects being worked on.

So again, I appreciate you taking this seriously and considering this an actual bug. You could have said “It’s working as intended” and left it at that, but you listened to and understood my issue, and that means a lot.
User avatar

2019-12-05 14:07:43

by t3rminus So again, I appreciate you taking this seriously and considering this an actual bug. You could have said “It’s working as intended” and left it at that, but you listened to and understood my issue, and that means a lot.
That's very kind of you to say — every one of us here at the team does genuinely care about user feedback (maybe a little too much, sometimes) so it's nice to be appreciated.
User avatar

2020-04-30 15:12:20

t3rminus, this case of Stroke was improved in version 1.6.1.