code: public static int multiplyRgb(int rgb, double fr, double fg, double fb)
      {
          if (rgb == 0)
          {
              return rgb;
          }
  
          final int a = rgb >> Constant.BYTE_4 & 0xFF;
          final int r = (int) UtilMath.clamp((rgb >> Constant.BYTE_3 & 0xFF) * fr, 0, 255);
          final int g = (int) UtilMath.clamp((rgb >> Constant.BYTE_2 & 0xFF) * fg, 0, 255);
          final int b = (int) UtilMath.clamp((rgb >> Constant.BYTE_1 & 0xFF) * fb, 0, 255);
  
          // CHECKSTYLE IGNORE LINE: BooleanExpressionComplexity|TrailingComment
          return (a & 0xFF) << Constant.BYTE_4
                 | (r & 0xFF) << Constant.BYTE_3
                 | (g & 0xFF) << Constant.BYTE_2
                 | (b & 0xFF) << Constant.BYTE_1;
      }
docs: Apply an rgb factor.
  
  @param rgb The original rgb.
  @param fr The red factor.
  @param fg The green factor.
  @param fb The blue factor.
  @return The multiplied rgb.