code: function (env, op, other) {
          var rgb = [];
          var alpha = this.alpha * (1 - other.alpha) + other.alpha;
          for (var c = 0; c < 3; c++) {
              rgb[c] = tree.operate(env, op, this.rgb[c], other.rgb[c]);
          }
          return new(tree.Color)(rgb, alpha);
      }
docs: Operations have to be done per-channel, if not, channels will spill onto each other. Once we have our result, in the form of an integer triplet, we create a new Color node to hold the result.