diff --git a/platform/platform-api/src/com/intellij/ui/paint/EffectPainter2D.java b/platform/platform-api/src/com/intellij/ui/paint/EffectPainter2D.java index e3c2a5f56635..627956dc055c 100644 --- a/platform/platform-api/src/com/intellij/ui/paint/EffectPainter2D.java +++ b/platform/platform-api/src/com/intellij/ui/paint/EffectPainter2D.java @@ -301,8 +301,8 @@ public enum EffectPainter2D implements RegionPainter2D { }; // we should not recalculate caches when IDEA is on Retina and non-Retina - private final ConcurrentHashMap myNormalCache = new ConcurrentHashMap<>(); - private final ConcurrentHashMap myHiDPICache = new ConcurrentHashMap<>(); + private final ConcurrentHashMap myNormalCache = new ConcurrentHashMap<>(); + private final ConcurrentHashMap myHiDPICache = new ConcurrentHashMap<>(); abstract double getPeriod(double height); @@ -319,9 +319,11 @@ public enum EffectPainter2D implements RegionPainter2D { } BufferedImage getImage(Graphics2D g, Color color, double height) { - float sysScale = JBUI.sysScale(g); - Long key = color.getRGB() ^ ((long)(sysScale * height + sysScale * 100) << 32); - ConcurrentHashMap cache = UIUtil.isJreHiDPI(g) ? myHiDPICache : myNormalCache; + int key = 17; + key = key * 31 + color.getRGB(); + key = key * 31 + Double.valueOf(JBUI.sysScale(g)).hashCode(); + key = key * 31 + Double.valueOf(height).hashCode(); + ConcurrentHashMap cache = UIUtil.isJreHiDPI(g) ? myHiDPICache : myNormalCache; return cache.computeIfAbsent(key, k -> createImage(g, color, height)); }