The bug
In 1.13 and earlier, the file paintings_kristoffer_zetterstrand.png had a 4×4 field of the back texture which would have been used for large paintings. However, as of 1.14, only a 16×16 texture region is available to retexture, which tiles to fit the back of the painting, making it impossible to give paintings larger back textures.
How to fix
Reimplement this larger back texture for paintings. I've cropped two versions from the Java and Bedrock versions of the old atlas - one for Programmer Art and the other for the default textures.
Alternatively, one back texture could be implemented for each unique size of painting.
Attachments
Comments

Can confirm with code analysis:
public class PaintingTextureManager extends TextureAtlasHolder {
private static final ResourceLocation BACK_SPRITE_LOCATION = new ResourceLocation("back");
public PaintingTextureManager(TextureManager var1) {
super(var1, new ResourceLocation("textures/atlas/paintings.png"), new ResourceLocation("paintings"));
}
public TextureAtlasSprite get(PaintingVariant var1) {
return this.getSprite(BuiltInRegistries.PAINTING_VARIANT.getKey(var1));
}
public TextureAtlasSprite getBackSprite() {
return this.getSprite(BACK_SPRITE_LOCATION);
}
}
While not obvious, this code handles rendering each 16x16 space on the back of the painting using the same texture.
Class is PaintingRenderer.java
and method is renderPainting()
. . .
this.vertex(var8, var2, var32, var35, var42, var43, -0.5F, 0, 0, -1, var40);
this.vertex(var8, var2, var33, var35, var41, var43, -0.5F, 0, 0, -1, var40);
this.vertex(var8, var2, var33, var34, var41, var44, -0.5F, 0, 0, -1, var40);
this.vertex(var8, var2, var32, var34, var42, var44, -0.5F, 0, 0, -1, var40);
this.vertex(var8, var2, var32, var34, var13, var14, 0.5F, 0, 0, 1, var40);
this.vertex(var8, var2, var33, var34, var12, var14, 0.5F, 0, 0, 1, var40);
this.vertex(var8, var2, var33, var35, var12, var15, 0.5F, 0, 0, 1, var40);
this.vertex(var8, var2, var32, var35, var13, var15, 0.5F, 0, 0, 1, var40);
this.vertex(var8, var2, var32, var34, var16, var18, -0.5F, 0, 1, 0, var40);
this.vertex(var8, var2, var33, var34, var17, var18, -0.5F, 0, 1, 0, var40);
this.vertex(var8, var2, var33, var34, var17, var19, 0.5F, 0, 1, 0, var40);
this.vertex(var8, var2, var32, var34, var16, var19, 0.5F, 0, 1, 0, var40);
this.vertex(var8, var2, var32, var35, var16, var18, 0.5F, 0, -1, 0, var40);
this.vertex(var8, var2, var33, var35, var17, var18, 0.5F, 0, -1, 0, var40);
this.vertex(var8, var2, var33, var35, var17, var19, -0.5F, 0, -1, 0, var40);
this.vertex(var8, var2, var32, var35, var16, var19, -0.5F, 0, -1, 0, var40);
this.vertex(var8, var2, var32, var34, var21, var22, 0.5F, -1, 0, 0, var40);
this.vertex(var8, var2, var32, var35, var21, var23, 0.5F, -1, 0, 0, var40);
this.vertex(var8, var2, var32, var35, var20, var23, -0.5F, -1, 0, 0, var40);
this.vertex(var8, var2, var32, var34, var20, var22, -0.5F, -1, 0, 0, var40);
this.vertex(var8, var2, var33, var34, var21, var22, -0.5F, 1, 0, 0, var40);
this.vertex(var8, var2, var33, var35, var21, var23, -0.5F, 1, 0, 0, var40);
this.vertex(var8, var2, var33, var35, var20, var23, 0.5F, 1, 0, 0, var40);
this.vertex(var8, var2, var33, var34, var20, var22, 0.5F, 1, 0, 0, var40);
. . .