Index: source/Lib/CommonLib/DepQuant.cpp
===================================================================
--- source/Lib/CommonLib/DepQuant.cpp	(revision vtm3.0)
+++ source/Lib/CommonLib/DepQuant.cpp	(working copy)
@@ -1175,8 +1175,13 @@
     m_QShift                    = QUANT_SHIFT  - 1 + qpPer + transformShift;
     m_QAdd                      = -( ( 3 << m_QShift ) >> 1 );
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+    Intermediate_Int  invShift  = IQUANT_SHIFT + 1 - qpPer - transformShift + ( TU::needsBlockSizeTrafoScale( area, tu.transformSkip[ compID ] ) ? ADJ_DEQUANT_SHIFT : 0 );
+    m_QScale                    = ( TU::needsSqrt2Scale( area, tu.transformSkip[ compID ] ) ? ( g_quantScales[ qpRem ] * 181 ) >> 7 : g_quantScales[ qpRem ] );
+#else
     Intermediate_Int  invShift  = IQUANT_SHIFT + 1 - qpPer - transformShift + ( TU::needsBlockSizeTrafoScale( area ) ? ADJ_DEQUANT_SHIFT : 0 );
     m_QScale                    = ( TU::needsSqrt2Scale( area ) ? ( g_quantScales[ qpRem ] * 181 ) >> 7 : g_quantScales[ qpRem ] );
+#endif
 #else
     Intermediate_Int  invShift  = IQUANT_SHIFT + 1 - qpPer - transformShift;
     m_QScale                    = g_quantScales   [ qpRem ];
@@ -1255,8 +1260,13 @@
     const bool        clipTransformShift    = ( tu.transformSkip[ compID ] && sps.getSpsRangeExtension().getExtendedPrecisionProcessingFlag() );
     const int         transformShift        = ( clipTransformShift ? std::max<int>( 0, nomTransformShift ) : nomTransformShift );
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+    Intermediate_Int  shift                 = IQUANT_SHIFT + 1 - qpPer - transformShift + ( TU::needsBlockSizeTrafoScale( area, tu.transformSkip[ compID ] ) ? ADJ_DEQUANT_SHIFT : 0 );
+    Intermediate_Int  invQScale             = g_invQuantScales[ qpRem ] * ( TU::needsSqrt2Scale( area, tu.transformSkip[ compID ] ) ? 181 : 1 );
+#else
     Intermediate_Int  shift                 = IQUANT_SHIFT + 1 - qpPer - transformShift + ( TU::needsBlockSizeTrafoScale( area ) ? ADJ_DEQUANT_SHIFT : 0 );
     Intermediate_Int  invQScale             = g_invQuantScales[ qpRem ] * ( TU::needsSqrt2Scale( area ) ? 181 : 1 );
+#endif
 #else
     Intermediate_Int  shift                 = IQUANT_SHIFT + 1 - qpPer - transformShift;
     Intermediate_Int  invQScale             = g_invQuantScales[ qpRem ];
Index: source/Lib/CommonLib/Quant.cpp
===================================================================
--- source/Lib/CommonLib/Quant.cpp	(revision vtm3.0)
+++ source/Lib/CommonLib/Quant.cpp	(working copy)
@@ -309,8 +309,13 @@
   const int QP_rem = cQP.rem;
 
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  const bool needsScalingCorrection = TU::needsBlockSizeTrafoScale( tu.block( compID ), tu.transformSkip[compID] );
+  const int  NEScale    = TU::needsSqrt2Scale( tu.blocks[compID], tu.transformSkip[compID] ) ? 181 : 1;
+#else
   const bool needsScalingCorrection = TU::needsBlockSizeTrafoScale( tu.block( compID ) );
   const int  NEScale    = TU::needsSqrt2Scale( tu.blocks[compID] ) ? 181 : 1;
+#endif
 #if HEVC_USE_SCALING_LISTS
   const int  rightShift = (needsScalingCorrection ?   8 : 0 ) + (IQUANT_SHIFT - (iTransformShift + QP_per)) + (enableScalingLists ? LOG2_SCALING_LIST_NEUTRAL_VALUE : 0);
 #else
@@ -759,7 +764,11 @@
 
     int iWHScale = 1;
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+    if( TU::needsBlockSizeTrafoScale( rect, useTransformSkip ) )
+#else
     if( TU::needsBlockSizeTrafoScale( rect ) )
+#endif
     {
       iTransformShift += ADJ_QUANT_SHIFT;
       iWHScale = 181;
@@ -851,7 +860,11 @@
 
   int iWHScale = 1;
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  if( TU::needsBlockSizeTrafoScale( rect, tu.transformSkip[compID] ) )
+#else
   if( TU::needsBlockSizeTrafoScale( rect ) )
+#endif
   {
     iTransformShift += ADJ_QUANT_SHIFT;
     iWHScale = 181;
Index: source/Lib/CommonLib/QuantRDOQ.cpp
===================================================================
--- source/Lib/CommonLib/QuantRDOQ.cpp	(revision vtm3.0)
+++ source/Lib/CommonLib/QuantRDOQ.cpp	(working copy)
@@ -430,15 +430,25 @@
 #endif
 #else
 
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+double QuantRDOQ::xGetErrScaleCoeff( const bool needsSqrt2, SizeType width, SizeType height, int qp, const int maxLog2TrDynamicRange, const int channelBitDepth )
+#else
 double QuantRDOQ::xGetErrScaleCoeff( SizeType width, SizeType height, int qp, const int maxLog2TrDynamicRange, const int channelBitDepth )
+#endif
 {
   const int iTransformShift = getTransformShift(channelBitDepth, Size(width, height), maxLog2TrDynamicRange);
 #if HM_QTBT_AS_IN_JEM_QUANT
   double    dErrScale       = (double)( 1 << SCALE_BITS );                                // Compensate for scaling of bitcount in Lagrange cost function
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  double    dTransShift     = (double)iTransformShift + ( needsSqrt2 ? -0.5 : 0.0 );
+  dErrScale                 = dErrScale*pow( 2.0, ( -2.0*dTransShift ) );                     // Compensate for scaling through forward transform
+  int       QStep           = ( needsSqrt2 ? ( ( g_quantScales[qp] * 181 ) >> 7 ) : g_quantScales[qp] );
+#else
   bool      needsSrqt2      = TU::needsBlockSizeTrafoScale( Size(width, height) );// ( ( (sizeX+sizeY) & 1 ) !=0 );
   double    dTransShift     = (double)iTransformShift + ( needsSrqt2 ? -0.5 : 0.0 );
   dErrScale                 = dErrScale*pow( 2.0, ( -2.0*dTransShift ) );                     // Compensate for scaling through forward transform
   int       QStep           = ( needsSrqt2 ? ( ( g_quantScales[qp] * 181 ) >> 7 ) : g_quantScales[qp] );
+#endif
   double    finalErrScale = dErrScale / QStep / QStep / (1 << (DISTORTION_PRECISION_ADJUSTMENT(channelBitDepth) << 1));
 #else
   int errShift = SCALE_BITS - ((iTransformShift + DISTORTION_PRECISION_ADJUSTMENT(channelBitDepth)) << 1);
@@ -696,8 +706,13 @@
 
   const bool   enableScalingLists             = getUseScalingList(uiWidth, uiHeight, tu.transformSkip[compID]);
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  const int    defaultQuantisationCoefficient = ( TU::needsSqrt2Scale( rect, tu.transformSkip[compID] ) ? ( g_quantScales[cQP.rem] * 181 ) >> 7 : g_quantScales[cQP.rem] );
+  const double defaultErrorScale              = xGetErrScaleCoeffNoScalingList(scalingListType, (uiLog2BlockWidth-1), (uiLog2BlockHeight-1), cQP.rem);
+#else
   const int    defaultQuantisationCoefficient = ( TU::needsSqrt2Scale( rect ) ? ( g_quantScales[cQP.rem] * 181 ) >> 7 : g_quantScales[cQP.rem] );
   const double defaultErrorScale              = xGetErrScaleCoeffNoScalingList(scalingListType, (uiLog2BlockWidth-1), (uiLog2BlockHeight-1), cQP.rem);
+#endif
 #else
   const double blkErrScale                    = ( TU::needsQP3Offset( tu, compID ) ? 2.0 : 1.0 );
   const int    defaultQuantisationCoefficient = g_quantScales[cQP.rem];
@@ -705,8 +720,13 @@
 #endif
 #else //HEVC_USE_SCALING_LISTS
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  const int    quantisationCoefficient = ( TU::needsSqrt2Scale( rect, tu.transformSkip[compID] ) ? ( g_quantScales[cQP.rem] * 181 ) >> 7 : g_quantScales[cQP.rem] );
+  const double errorScale              = xGetErrScaleCoeff( TU::needsSqrt2Scale( rect, tu.transformSkip[compID] ), uiWidth, uiHeight, cQP.rem, maxLog2TrDynamicRange, channelBitDepth );
+#else
   const int    quantisationCoefficient = ( TU::needsSqrt2Scale( rect ) ? ( g_quantScales[cQP.rem] * 181 ) >> 7 : g_quantScales[cQP.rem] );
   const double errorScale              = xGetErrScaleCoeff( uiWidth, uiHeight, cQP.rem, maxLog2TrDynamicRange, channelBitDepth );
+#endif
 #else
   const double blkErrScale             = ( TU::needsQP3Offset( tu, compID ) ? 2.0 : 1.0 );
   const int    quantisationCoefficient = g_quantScales[cQP.rem];
Index: source/Lib/CommonLib/QuantRDOQ.h
===================================================================
--- source/Lib/CommonLib/QuantRDOQ.h	(revision vtm3.0)
+++ source/Lib/CommonLib/QuantRDOQ.h	(working copy)
@@ -76,8 +76,12 @@
   void    xDestroyScalingList            ();
   void    xSetErrScaleCoeff              ( uint32_t list, uint32_t sizeX, uint32_t sizeY, int qp, const int maxLog2TrDynamicRange[MAX_NUM_CHANNEL_TYPE], const BitDepths &bitDepths );
 #else
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  double  xGetErrScaleCoeff              ( const bool needsSqrt2, SizeType width, SizeType height, int qp, const int maxLog2TrDynamicRange, const int channelBitDepth);
+#else
   double  xGetErrScaleCoeff              ( SizeType width, SizeType height, int qp, const int maxLog2TrDynamicRange, const int channelBitDepth);
 #endif
+#endif
 
   // RDOQ functions
   void xRateDistOptQuant(TransformUnit &tu, const ComponentID &compID, const CCoeffBuf &pSrc, TCoeff &uiAbsSum, const QpParam &cQP, const Ctx &ctx);
Index: source/Lib/CommonLib/TrQuant.cpp
===================================================================
--- source/Lib/CommonLib/TrQuant.cpp	(revision vtm3.0)
+++ source/Lib/CommonLib/TrQuant.cpp	(working copy)
@@ -485,7 +485,7 @@
   }
 
   int iWHScale = 1;
-#if HM_QTBT_AS_IN_JEM_QUANT
+#if HM_QTBT_AS_IN_JEM_QUANT && !JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
   if( TU::needsBlockSizeTrafoScale( area ) )
   {
     iTransformShift += ADJ_QUANT_SHIFT;
@@ -787,7 +787,7 @@
   }
 
   int iWHScale = 1;
-#if HM_QTBT_AS_IN_JEM_QUANT
+#if HM_QTBT_AS_IN_JEM_QUANT && !JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
   if( TU::needsBlockSizeTrafoScale( rect ) )
   {
     iTransformShift -= ADJ_DEQUANT_SHIFT;
Index: source/Lib/CommonLib/TypeDef.h
===================================================================
--- source/Lib/CommonLib/TypeDef.h	(revision 4924)
+++ source/Lib/CommonLib/TypeDef.h	(working copy)
@@ -233,6 +233,8 @@
 #define HM_JEM_MERGE_CANDS                                1   // ***
 #endif
 
+#define JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT 1
+
 #endif//JEM_COMP
 
 // ====================================================================================================================
Index: source/Lib/CommonLib/UnitTools.cpp
===================================================================
--- source/Lib/CommonLib/UnitTools.cpp	(revision 4924)
+++ source/Lib/CommonLib/UnitTools.cpp	(working copy)
@@ -5547,17 +5547,31 @@
   return count;
 }
 
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+bool TU::needsSqrt2Scale( const Size& size, const bool bTransformSkip )
+{
+  return (!bTransformSkip) && (((g_aucLog2[size.width] + g_aucLog2[size.height]) & 1) == 1);
+}
+#else
 bool TU::needsSqrt2Scale( const Size& size )
 {
   return (((g_aucLog2[size.width] + g_aucLog2[size.height]) & 1) == 1);
 }
+#endif
 
 #if HM_QTBT_AS_IN_JEM_QUANT
 
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+bool TU::needsBlockSizeTrafoScale( const Size& size, const bool bTransformSkip )
+{
+  return needsSqrt2Scale( size, bTransformSkip ) || isNonLog2BlockSize( size );
+}
+#else
 bool TU::needsBlockSizeTrafoScale( const Size& size )
 {
   return needsSqrt2Scale( size ) || isNonLog2BlockSize( size );
 }
+#endif
 #else
 bool TU::needsQP3Offset(const TransformUnit &tu, const ComponentID &compID)
 {
Index: source/Lib/CommonLib/UnitTools.h
===================================================================
--- source/Lib/CommonLib/UnitTools.h	(revision vtm3.0)
+++ source/Lib/CommonLib/UnitTools.h	(working copy)
@@ -216,9 +216,18 @@
 #endif
   bool hasCrossCompPredInfo           (const TransformUnit &tu, const ComponentID &compID);
 
+
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  bool needsSqrt2Scale                ( const Size& size, const bool bTransformSkip );
+#else
   bool needsSqrt2Scale                ( const Size& size );
+#endif
 #if HM_QTBT_AS_IN_JEM_QUANT
+#if JVET_M0119_NO_TRANSFORM_SKIP_QUANTISATION_ADJUSTMENT
+  bool needsBlockSizeTrafoScale       ( const Size& size, const bool bTransformSkip );
+#else
   bool needsBlockSizeTrafoScale       ( const Size& size );
+#endif
 #else
   bool needsQP3Offset                 (const TransformUnit &tu, const ComponentID &compID);
 #endif
@@ -373,4 +382,4 @@
 #endif
 
 
-#endif
\ No newline at end of file
+#endif
