Old Post but for future reading:
Post the correct engine version.
Test and save any recorded fault. A freeze frame capture with OBD II may indicate the fault at that temperature.
Test the battery, there may not be enough "starter speed".
Test the starter, it could be a root cause. High current draw from the starter will cause lots of grief at the PCM.
A "Carbon Pile" and or DC AMP clamp with prove starter health at those temperatures.
Test / clean the battery connections and ALL GROUND connections.
Get rid of the "cold air intake". Tested many many times and a failed product in "normal driving conditions".
With the scan tool and cold - without cranking the engine, measure ECT (Engine Cooling Temperature) and IAT (Intake Air Temperature). Match the readings to outside air temperature. If one is different, replace the sensor.
With the engine cranking and connected to the scan tool, the tool should read cranking RPM.
With the engine cranking and connected to the scan tool, the tool should read MAF (Mass Air Flow).
Find out if the ECM had a "performance flash installed". If it did, revert it back to stock.
In cold weather starts, I use one of these on the oil pan. Warmer oil speeds up cranking RPM.
All that is needed is 3 hours of heating time with a timing device before the engine is started.