diff --git a/src/Zjets.cc b/src/Zjets.cc
index bf369bf..e58a124 100644
--- a/src/Zjets.cc
+++ b/src/Zjets.cc
@@ -1,169 +1,170 @@
 /**
  *  \authors   The HEJ collaboration (see AUTHORS for details)
  *  \date      2020
  *  \copyright GPLv2 or later
  */
 #include <vector>
 
 #include "HEJ/Constants.hh"
 #include "HEJ/EWConstants.hh"
 #include "HEJ/jets.hh"
 
 // generated headers
 #include "HEJ/currents/jZ_j.hh"
 
 using HEJ::Helicity;
 using HEJ::ParticleProperties;
 
 namespace helicity = HEJ::helicity;
 
 namespace {
   // Z propagator
   COM ZProp(double q, ParticleProperties const & zprop){
     return 1. / (q - zprop.mass*zprop.mass + COM(0.,1.)*zprop.width*zprop.mass);
   }
 
   // Photon propagator
   COM GProp(double q) {
     return 1. / q;
   }
 
   // Weak charge
   double Zq (int PID, Helicity h, double stw2, double ctw) {
     // Positive Spin
     if (h == helicity::plus) {
       // quarks
       if (PID ==  1 || PID ==  3 || PID ==  5) return (+ 1.0 * stw2 / 3.0) / ctw;
       if (PID ==  2 || PID ==  4)              return (- 2.0 * stw2 / 3.0) / ctw;
       if (PID == -1 || PID == -3 || PID == -5) return (- 1.0 * stw2 / 3.0) / ctw;
       if (PID == -2 || PID == -4)              return (+ 2.0 * stw2 / 3.0) / ctw;
       // electron
       if (PID == 11) return stw2 / ctw;
     }
     // Negative Spin
     else {
       // quarks
       if (PID ==  1 || PID ==  3 || PID ==  5) return (-0.5 + 1.0 * stw2 / 3.0) / ctw;
       if (PID ==  2 || PID ==  4)              return ( 0.5 - 2.0 * stw2 / 3.0) / ctw;
       if (PID == -1 || PID == -3 || PID == -5) return ( 0.5 - 1.0 * stw2 / 3.0) / ctw;
       if (PID == -2 || PID == -4)              return (-0.5 + 2.0 * stw2 / 3.0) / ctw;
       // electron
       if (PID == 11) return (-1.0 / 2.0 + stw2) / ctw;
     }
     throw std::logic_error("ERROR! No weak charge found");
   }
 
   // Electric charge
   double Gq (int PID) {
     if (PID ==  1 || PID ==  3 || PID ==  5) return -1.0 / 3.0;
     if (PID ==  2 || PID ==  4)              return  2.0 / 3.0;
     if (PID == -1 || PID == -3 || PID == -5) return  1.0 / 3.0;
     if (PID == -2 || PID == -4)              return -2.0 / 3.0;
     throw std::logic_error("ERROR! No electric charge found");
   }
 
 
   void Z_amp(HLV pa, HLV pb, HLV p1, HLV p2, HLV pep, HLV pem, int aptype, COM PZ, COM PG,
              double stw2, double ctw, COM (&res)[2][2][2]
   ){
     using helicity::plus;
     using helicity::minus;
 
     const double Zq_a_p = Zq(aptype, (aptype>0 ? plus : minus), stw2, ctw);
     const double Zq_a_m = Zq(aptype, (aptype>0 ? minus : plus), stw2, ctw);
     const double Ze_p   = Zq(HEJ::pid::electron, plus,  stw2, ctw);
     const double Ze_m   = Zq(HEJ::pid::electron, minus, stw2, ctw);
     const double Gq_a   = Gq(aptype);
 
     const COM pref_pp = -2.*(Zq_a_p * Ze_p * PZ - Gq_a * PG * stw2);
     const COM pref_pm = -2.*(Zq_a_p * Ze_m * PZ - Gq_a * PG * stw2);
     const COM pref_mm = -2.*(Zq_a_m * Ze_m * PZ - Gq_a * PG * stw2);
     const COM pref_mp = -2.*(Zq_a_m * Ze_p * PZ - Gq_a * PG * stw2);
 
     const COM jZ_j_ppp = HEJ::jZ_j<plus, plus,  plus> (pa, p1, pb, p2, pem, pep);
     const COM jZ_j_ppm = HEJ::jZ_j<plus, plus,  minus>(pa, p1, pb, p2, pem, pep);
     const COM jZ_j_pmp = HEJ::jZ_j<plus, minus, plus> (pa, p1, pb, p2, pem, pep);
     const COM jZ_j_pmm = HEJ::jZ_j<plus, minus, minus>(pa, p1, pb, p2, pem, pep);
 
     res[1][1][1] = (pref_pp * jZ_j_ppp);
     res[1][1][0] = (pref_pp * jZ_j_ppm);
     res[1][0][1] = (pref_pm * jZ_j_pmp);
     res[1][0][0] = (pref_pm * jZ_j_pmm);
     res[0][0][0] = (pref_mm * conj(jZ_j_ppp));
     res[0][0][1] = (pref_mm * conj(jZ_j_ppm));
     res[0][1][0] = (pref_mp * conj(jZ_j_pmp));
     res[0][1][1] = (pref_mp * conj(jZ_j_pmm));
   }
 } // Anonymous Namespace
 
 
 std::vector <double> ME_Z_qQ(HLV pa, HLV pb, HLV p1, HLV p2, HLV pep, HLV pem,
                              int aptype, int bptype, ParticleProperties const & zprop,
                              double stw2, double ctw
 ){
   const HLV pZ = pep + pem;
   const COM PZ = ZProp(pZ.m2(), zprop);
   const COM PG = GProp(pZ.m2());
 
   COM Coeff_top[2][2][2], Coeff_bot[2][2][2];
   Z_amp(pa, pb, p1, p2, pep, pem, aptype, PZ, PG, stw2, ctw, Coeff_top);
   Z_amp(pb, pa, p2, p1, pep, pem, bptype, PZ, PG, stw2, ctw, Coeff_bot);
 
   double sum_top=0., sum_bot=0., sum_mix=0.;
   for(int h1=0; h1<2; h1++){
     for(int hl=0; hl<2; hl++){
       for(int h2=0; h2<2; h2++){
         sum_top += norm(Coeff_top[h1][hl][h2]);
         sum_bot += norm(Coeff_bot[h1][hl][h2]);
         sum_mix += 2.0*real(Coeff_top[h1][hl][h2]*conj(Coeff_bot[h2][hl][h1]));
       }
     }
   }
 
   const double t1_top = (pa-p1-pZ).m2();
   const double t2_top = (pb-p2   ).m2();
 
   const double t1_bot = (pa-p1   ).m2();
   const double t2_bot = (pb-p2-pZ).m2();
 
   sum_top /= t1_top * t2_top;
   sum_bot /= t1_bot * t2_bot;
   sum_mix /= sqrt(t1_top * t2_top * t1_bot * t2_bot);
 
-  // Division by colour and Helicity average (Nc2-1)(4)
-  // Multiply by Cf^2
-  const double pref = HEJ::C_F*HEJ::C_F / ((HEJ::N_C*HEJ::N_C - 1)*4);
+  // Colour factor: (CF*CA)/2
+  // Colour and helicity average: 1/(4*Nc^2)
+  const double pref = (HEJ::C_F*HEJ::C_A) / (8*HEJ::N_C*HEJ::N_C);
 
   return {sum_top*pref, sum_bot*pref, sum_mix*pref};
 }
 
 
 double ME_Z_qg(HLV pa, HLV pb, HLV p1, HLV p2, HLV pep, HLV pem,
                int aptype, int /*bptype*/, ParticleProperties const & zprop,
                double stw2, double ctw
 ){
   const HLV pZ = pep + pem;
   const COM PZ = ZProp(pZ.m2(), zprop);
   const COM PG = GProp(pZ.m2());
 
   COM Coeff[2][2][2];
   Z_amp(pa, pb, p1, p2, pep, pem, aptype, PZ, PG, stw2, ctw, Coeff);
 
   double sum = 0.;
   for(int h1=0; h1<2; h1++){
     for(int hl=0; hl<2; hl++){
       for(int h2=0; h2<2; h2++){
         sum += norm(Coeff[h1][hl][h2]);
       }
     }
   }
 
   sum /= (pa-p1-pZ).m2()*(pb-p2).m2();
 
-  // Division by colour and Helicity average (Nc2-1)(4)
-  // Multiply by Cf
-  sum *= HEJ::C_F / ((HEJ::N_C*HEJ::N_C - 1)*4);
+  // Colour factor: (CF*CA)/2
+  // Colour and helicity average: 1/(4*Nc^2)
+  // Divide by CF because of gluon (K_g -> CA)
+  sum *= HEJ::C_A / (8*HEJ::N_C*HEJ::N_C);
 
   // Multiply by CAM
   return sum * K_g(p2, pb);
 }