I'll now describe a new workflow to generate sprites, based on learning more about SD's workings.
1. The original sprite, on black background, is scaled to 512 x something, using R-ESRGAN 4x+ Anime6B.
2. I use two controlnets, Canny and Depth. To generate new details, Canny but not Depth is released at the start and/or end of generation. Previously I used 100 iterations of Euler, but 10 iterations of DBM++ SDE and generating 20 images, then picking the best one is better. We use latent upscale here. The prompt should encourage a vanilla-adjacent style, so, strong lines and not low contrast. This is where I'll also improve the image by hand, for example highlighting parts or drawing the Sindrian pattern, though that's usually not required for pirate liveries.
3. Using R-ESRGAN, we scale the image to 3x the size of the original (so, 504 x 1200), then pixelize to 1/3. This results in a 168 x 400 sprite, but the colors often get distorted here.
4. Using GIMP, we apply the original ship's mask, and the original SD-generated image scaled in GIMP as a LCH color layer.
Nice.